見出し画像

MySQL クエリのパフォーマンス改善テクニック -その9- ソートを多用するな!

フルスタックエンジニア()な clown の note にようこそ。

はじめに

今回やること

MySQL のクエリパフォーマンス改善のひとつとして、今回はソートの注意点を扱います。

対象者

  • RSDB を使ってて、ユーザから重いって言われてるあなた

  • DB 担当になったけど、何から手を付けていいかわかんないあなた

  • MySQL を使っているあなた(他 DB でも基本はそんなに違わないです)


ざっくり説明

今日も DBMS と格闘してますか?

正直、クエリなんて究極は動けばいいんですけど、無駄にソートをするかしないかだけの差で、パフォーマンスが変わります。

あなたの書いたこのクエリ。いつもソートばっかりしてて激重だよね?

なんていうお小言を貰っちゃったりします。
ダメダヒキコモロウ…
なんて言わずに

ソートに注意を払ったクエリを書けばいいじゃない。

というのが今回の話。
そんなことも知らないの?とか言われるのが嫌!
クエリが遅いのは判ってるのに、なんら手をうてない自分が嫌!
という悩みを解決するのがこの記事です。

ソートを使う

ソートってなぁに?

ソートとは、ルールに従って並べ替えること。
大きい順、小さい順、あいうえお順などで並べ替えします。

ということは?

ソートでは

取得した全レコードをメモリに展開して比較してから並べ替え

という作業がバックグラウンドで走るので、特に CPU やメモリのリソースをたくさん使います。だからとても重たくなりがちです。
使わなくても目的のレコードを抽出できるなら、使わない方がいい。というのがソート。

でも…

絶対使わない!
と固く誓っても、絶対使わないというわけにもいかないのがソート。
だから、使わなくて済むなら使わない。程度の気を付け具合で大丈夫です。

ソートにもいろいろと議論があって、
"簡単にわかりやすく伝えたい"
がこの記事の主旨で、扱うには重たいテーマになるので近い将来「order by を制する方法」といった記事を書きます。


支援のお願い


素材引用元

アイコン

見出し


この記事が気に入ったらサポートをしてみませんか?