複合インデックスの挙動

テーブルにA,B,Cというインデックスが張ってあるとする。

その場合、A順で同じものがある場合B順、同じものがある場合はC順というソートを行った結果へのアクセスを速くする。A順やAB順のインデックスの代わりにも使える。

ということらしいのだけど、

x<A<y AND x2<B<y2 AND C = z

上の条件の場合C,A,Bの複合インデックスを張って条件の順番を変えるべきなのかな。もちろん何もインデックスが張ってないよりは高速だと思いますが。

ちなみに、自分はこれを知らずに ABCとインデックスを張った上からAのインデックスを張っていました。

結果2時間半かけてもINSERTが終わらない(同スペック別環境では30分)という事態に陥ったのですが、ALTER TABLE DROP INDEX後に再度INSERTで大体30分程度で完了しました。INSERTさん遅い遅い言ってごめんなさい。インデックスの最適化は大事なんですね。ALTER TABLEのおかげもあるかもしれませんが。

カテゴリー: MySQL, プログラミング関連 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です