定期的に愚痴りたくなるmasaoです。
ある日「ちょっとコレ遅いんだけどなんとかならないの?」と聞かれたのでいつものように人様のつくった謎コードをみることになりました。なお、関数名のおはなしは後半部分にちょっとだけ掲載しています。
スポンサーリンク
LIKE演算子で完全一致検索
今回の対処はわりとすぐに終わりました。「やばいよー、やばいよー」ってドキドキしながら遅いといわれる処理部分を確認すると、なんと、完全一致検索にもかかわらず LIKE演算子を使用していることがわかりました。
select ハイボール from 冷蔵庫 where 製造元 Like 'サントリー'
おいおい。何でこうしたのか理由は分かりません。何か理由があったのか、なかったのかもわかりません。きっと、理由などないとは思いますが。。。。では、書き換えます。
select ハイボール from 冷蔵庫 where 製造元 = 'サントリー'
すると、インデックスが威力を発揮し、スピードは数十倍から数百倍に改善されました。本当に今まで遅いと感じながらも文句も言わず(言ってたとは思いますが)使っていたなと素直に思いました。
まあ、実際のSQLはもちろん違いますが、念のため断っておきます。(;^_^A
悪用厳禁!!
最初にできの悪いツールで我慢させておいて、あとで劇的に改善されるとなぜか当人たちはありがたがります。普通なら文句を言われそうなものですが。
ん~~~~。この作戦もいいかも。でもダメですよ。本当にこの作戦使ったら。
関数名はちゃんと考えよう
できるエンジニアは関数名の一つでもちゃんと考えています。しかし、そのうちナアナアになることが多いのも事実です。特に時間に追われているような場合は、関数名どころではなくなっている場合もあるでしょう。
しかし、関数名はなるべくやっていることを正しく表現していることが望ましいのは間違いありません。自分もできているかと言われれば「ビミョー」かなと思う次第であります。でも、あからさまに「ちーがーうーだーろーーーー!」というのは、ないとは思います。
ぶち切れしたくなる関数名つけている人も見かけますよね。checkIP 関数が ping 送信してる的な、アレです。そんなときはぶち切れしましょう。平和な日本です。笑って許してくれるでしょう。
ただし、そんなわたしも、本ブログでの発言内容は支離滅裂であったりもします。どうどうと間違った知識の上で発言していることもあることでしょう。どうかそんなときは、笑ってゆるしてください。できれば指摘してください。🙇
それでは、本日の愚痴は以上になります。おしまい。