【MySQL】SQLの実行計画を取得する方法


ここではMySQLで、SQLの実行計画を取得する方法を紹介します。

SQLの実行計画を取得する方法

SQLの実行計画を取得するには、EXPLAIN文を使います。

EXPLAIN SELECT文;

EXPLAINで確認できる項目は以下の通りです。

項目 内容
id SELECT文の識別子
・SIMPLE:単純なSQL
・PRIMARY:外部のSQL
・UNION:UNIONで結合されたSQL
・UNION RESULT:UNION結合の結果
・SUBSELECT:サブクエリのSQL
・DERIVED:FROM句内のSQL
・UNCACHEABLE SUBQUERY:結果がキャッシュされないサブクエリSQL
・UNCACHEABLE UNION:結果がキャッシュされないUNIONのSQL
select_type SELECT文の型
table テーブル名
type テーブルの検索方法
・system:テーブルが一行の場合systemとなる
・const:WHERE句の列=条件で、主キーまたはインデックス(UNIQUE)の設定された列で一致する行が1行となるとき
・eq_ref:主キーの設定された列に条件が指定された場合
・ref:インデックスの設定された列に条件が指定された場合
・ref_or_null:refの条件に加え、NULLの値も検索する場合
・index:インデックスの順に表のデータを検索する場合
・range:インデックスの順に範囲検索する場合
・index_merge:複数のrangeスキャンをする場合
・unique_subquery:サブクエリの返却値が1件の場合
・index_subquery:サブクエリの返却値が1件の場合
・ALL:全件検索、テーブルフルスキャン
possible_keys 使用可能なインデックス
key 使用するインデックス名
key_len インデックスの長さ
ref スキャンするインデックスや定数
rows スキャンする行数
filtered スキャンする行数の割合
Extra 補足情報