バイト先で使っていたら意外に使われていなかったようなので紹介。
フリーのDBMSであるpostgreSQLのwindows版をinstallすると標準でくっついてくるpgAdminIIIにはクエリプランをグラフ化してくれる機能が付いている。
流石にバイト先のDBは見せられないので研究室のサーバで例を...。
まず、サーバに繋ぎ、DBを選択し、sqlボタンを押す。
昔にもちょこっと書いたけど、SQLのコストを調べる場合、まずvacuum analyze(or analyze オンリー)で現在のテーブルの大きさをDBMSに把握させ、実行するSQL全体をexplain analyze(またはexplainのみ)でくくる。
大抵の場合、この結果を見てどの辺がボトルネックなのか調べるわけですが、explain の結果はちょっと見づらい。この例ではまだ4テーブルの結合だからいいけどもっと多く結合する場合、ネストしまくるので、追いづらくなる。
pgAdminIIIを使っているのなら、explainでSQLをくくらずにF7キー一発でグラフ化できる。(ただし、explain analyzeと同様、実時間も計測したかったらメニューにあるクエリーから > 解釈 クエリー > 解釈オプション > アナライズを選択する必要アリ)
こっちの方が圧倒的に見やすい。矢印の太さでコストの大小が分かる。
ちなみにグラフ中のアイコンをクリックすれば詳細が出てくる。
--
postgreSQL以外のDBMSだとどうなんだろう?まだ調べてないや。