MySQLのインデックス関連
MySQLで全文検索 - FULLTEXTインデックスの基礎知識|blog|たたみラボ
MySQL:インデックスまとめメモ
経由
MySQLの最適化 - Oliver の日記|slashdot
より
MySQLがindexを活用する時
- フィールド値を定数と比較するとき(WHERE name = "hogehoge")
- フィールド値全体でJOINするとき(WHERE a.name = b.name)
- フィールド値の範囲を求める時
- LIKEで文字列の先頭が固定な時
- MIN(),MAX()(複数要素indexの同一firstfieldでsecondfieldのmin,maxでも有効)
- 文字列のプレフィックスをもとにしたORDER BY,GROUP BY
- WHEREのすべてのフィールドがindexの一部の場合(DBまったく参照されず)
indexが使われない時
- LIKEがワイルドカードで始まる時
- DB全体を読んだ方が早いとMySQLが判断した時
- 通常はindexはORDER BYには使われない
- WHEREとORDER BYのフィールドが違う時にはどちらかしか使われない
SELECTの最適化