id/select_type/table
- どのテーブルがどの順番でアクセスされているか
id
- 実行順番を表す
- 数字が同じなら複数のクエリが1つのクエリとして実行されている
select_typeの詳細
-
SIMPLE
- 単一のテーブル
- サブクエリが絡む場合
-
PRIMARY
- 外部クエリ
-
SUBQUERY
- 相関関係の無いサブクエリ
-
DEPENDENT SUBQUERY
- 相関関係のあるサブクエリ
-
UNCACHEABLE SUBQUERY
- 実行する度に結果が変わる可能性のあるサブクエリ
-
DERIVED
- FROM句で用いられているサブクエリ
-
PRIMARY
table
- 対象テーブルの名称
partition
- どのpartisionテーブルを使用したか
- 複数にまたがる時は複数の値が表示される
type
- レコードアクセスタイプ
typeの詳細
-
const
- pk or uniqueインデックスを使用したルックアップによるアクセス
- 最も速い
-
eq_ref
- joinにおいてのconstと同義
-
ref
- constでないインデックスを使って等価検索(where k = v)を行った時に使用されるアクセス
-
range
- indexを用いた範囲検索
-
index
- フルインデックススキャン、インデックス全体をスキャンしているので遅い
-
ALL
- フルテーブルスキャン、インデックスが全く使用されていないことを示す、つまり一番遅い
possible_keys
- optimizerがテーブルのアクセスに利用可能だと判断したインデックス
key
- 実際にoptimizerによって使用されたキー
key_len
- 選択されたキーの長さ。長さは短いほうが高速。
ref
- 検索条件でkeyと比較されている値やカラムの種類。
-
定数の場合
- const
-
JOINを使用している場合
- 結合する相手側のテーブルで検索条件として利用されているカラムが表示される
-
定数の場合
rows
- そのテーブルからfetchされる行数の見積もり。
- 大まかな見積もりなので、実際にfetchする行数とは変わる可能性がある。
- しかしDERIVEDテーブルだけは実際に実行しないと行数の見積もりができないので、DERIVEDテーブルの見積もりだけは正確
filtered
- テーブル条件によってフィルタ処理される行の推定の割合
-
rows × filtered / 100
が前のテーブルと結合される行数を表す
Extra
- optimizerがどのような戦略を立てたかを知ることが出来る
- 多いのでここを見ることを推奨