言葉のさんぽ道

~気ままに写真とゲームの話題が更新されるはず~

複合インデックスの罠

お仕事メモ。
新人の子が作ったSQLが、めっさDBに負荷をかけていたという事でパフォーマンスチューニングをお手伝い。
見るとSQL自体は単純なもの。

select * from tbl_a where a2 = 'test'

自分「a2にはインデックスがあるんだよね?」
新人くん「はいあります」
自分「そっかあ、何でだろうねえ」

とか言いつつ裏で tbl_a のDDLを見る。この男、まるで相手を信用していない。←いやそういう訳じゃないんだよ!!一応だよ一応!念の為!!


で、結論から言うとインデックスは貼ってあった。
こんな形で。

create index a_idx on tbl_a(a1, a2)

ぅぉい!!複合インデックスでねーの!しかもa2は2列目だからインデックス効いてねーでねーのさ!実行計画でFULL SCANになってるのも当然だっぺ!


そんな訳で問題自体はa1も検索条件に含める事で解決。めでたしめでたし。しかし同時にコードレビューの必要性を改めて感じたのであった。あとこういう細かいお作法について学ぶ勉強会とかも開いた方が良いなあと思ったりもした。