ここでは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 | 補足情報 |