EXPLAIN 結果をどう見るか
id/select_type
サブクエリやUNIONを使った場合に、どういう順序でクエリが実行されるかが分かる。シンプルなクエリ(サブクエリやUNIONを含まない)の場合は SIMPLE が表示される。
table/type
どのテーブルにアクセスするかと、対象のテーブルにどうやってアクセスするか。
const– PRIMARY KEY か UNIQUE KEY が使われる。これが一番はやいeq_ref– const の JOIN 版。ref– PRIMERY KEY / UNIQUE KEY 以外のインデックスが使われるかつ、条件が=のもの。range– インデックスを使った範囲検索index– インデックスのフルスキャン。遅いALL– テーブルのフルスキャン。インデックスが使われない
index や ALL になっている場合は改善が必要。
possible_keys/key/key_len
使えそうなキーの一覧と実際に選択されたキー、そして選択されたキーの長さ。キーは短いほうがパフォーマンスが良い
ref
keyと比較されている値の種類。定数なら const 、JOIN してるときは結合先のテーブルのカラムが表示される
rows
フェッチされる行数の見積もり。見積もりなので正確な値ではない。
Extra
テーブルに対してどんなことを行うか。
Using where– WHERE句が指定されていて、インデックスだけでは網羅できないときに出る。が、頻繁に出るので問題ないUsing index– インデックスだけでなんとかできる場合に出る。これになりたいUsing index condition– 一部インデックスが利用されるusing filesort– ファイルソートが使われる場合に出る。インデックスを使って、ファイルソートしなくて済むようにするのが良いUsing temporary– テンポラリーテーブルが作成される場合に出る


