めも。
SQLを発行する再、文の一番先頭に「EXPLAIN」とつけると、オプティマイザのデバッグ情報を取得することが出来る。
下記例。
EXPLAIN SELECT * FROM table_name WHERE id = 1
上記SQLによって取得出来る情報の「type」の欄が重要。
「type」には下記表のものが多く見られる。
system | テーブルに1レコードしかない状態 |
const | マッチするレコードが1件しかない状態。PRIMARY KEYまたはUNIQUEインデックスを利用して検索される |
eq_ref | JOINにおいてPRIMARY KEYまたはUNIQUEインデックスを利用して1つのレコードを検索している状態。理想的なJOINの形式 |
range | インデックスを用いた範囲検索 |
index | すべてのレコードのインデックスをスキャンする必要がある状態(フルインデックススキャン) |
ALL | すべてのレコードを走査する必要がある状態(フルテーブルスキャン) |
上から順に高速なので、なるべく上に近づくようなSQLを発行してやれば結果的にパフォーマンスは上昇する。