SQLの速度改善~MySQLのEXPLAIN

業務で使用するSQL

通常は、納品直後は問題ないのが殆どだけど、やっぱりデータ量によっては
徐々に重くなり、気が付けば1画面表示するのに何秒も掛かるケースもあります。

先日、調査したSQLも修正前は4s(秒)ほどだったのが0.028sに改善されました。
この時は、「MySQLのEXPLAIN」を使用してALLになっていた箇所をみて
インデックスをいくつか追加したのみでした。

その後、もう一件、他の一覧表示のSQL改善もしました。
16.8s→7.7sに改善
これはインデックスでは改善しなくて、SQLの取得方法を見直しました。
もう少し改善の余地もありそうでしたが、複雑なSQLにて見送りました。

使い方はいたって簡単。

普段書くSQLの最初にEXPLAINといれてから実行するだけ
EXPLAIN
SELECT XXX FROM stock_tbl WHERE stock_id = ? AND ・・・

その中でALLとなっているSQLを見直すだけです。
これでかなり改善されます。
インデックスで改善されないこともあるし複雑なSQLだと難しい場合もあります。
そもそもの構造の問題だったりデータ量の問題だったりもありますし
でも、やみくもにやるよりヒントがあるほうがやりやすいのかなと思います。

私は「A5:SQL Mk-2」のSQLエディタを愛用しています。
元同僚が作成したツールなんだけど、凄く良くできていて本当に使いやすい。
大手企業でも標準ツールとして紹介される程の優れもので
ERを作成したりDDL生成したりというのも出来て本当びっくりです。
確かに彼は、他のツールもチャチャチャッと作る人でした。
このSQLエディタでSQLのテストしてOKだったらJAVAソース用に秀丸で一括返還してJAVAに貼り付けしています。

重たいSQLだと効率が良いですし、テストの時も取得結果をエクセルにコピーするのも簡単で
凄く効率良くできるのが嬉しい。

EXPLAINもこのツールで表示されたので楽でした。
だからあまりコマンドでmysqlを起動することが滅多にないです。

コメント

タイトルとURLをコピーしました