explain
は SQL 文を分析するために使用され、具体的な使用方法は以下の通りです。
実行する SQL 文の前にexplain
を追加するだけでよいです。
各フィールドの意味は次の通りです:
- id:選択識別子で、id が大きいほど優先度が高く、最初に実行されます。
- select_type:クエリのタイプを示します。
- table:出力結果セットのテーブルです。
- partitions:一致するパーティションです。
- type:テーブルの結合タイプを示します。
- possible_keys:クエリ実行時に使用可能なインデックスです。
- key:実際に使用されるインデックスです。
- key_len:インデックスフィールドの長さです。
- ref:列とインデックスの比較です。
- rows:おおよその行数です。
- filtered:テーブル条件でフィルタリングされた行の割合です。
- Extra:実行の説明と説明です。
最も重要なのは、type フィールドで、type の値の種類は次の通りです:
- all:全表データをスキャンします。
- index:インデックスをトラバースします。
- range:インデックス範囲検索です。
- index_subquery:サブクエリで ref を使用します。
- unique_subquery:サブクエリで eq_ref を使用します。
- ref_or_null:null に対するインデックスの最適化の ref です。
- fulltext:全文検索を使用します。
- ref:ユニークでないインデックスを使用してデータを検索します。
- eq_ref:結合クエリで主キーまたはユニークインデックスを使用します。
- const:主キーを where の後に条件クエリとして配置すると、MySQL オプティマイザはこのクエリを定数に最適化できます。
結論#
異なるMySQL
バージョンでは、インデックスの無効化戦略も異なります。
ほとんどのインデックスの無効化は明確ですが、一部のインデックスの無効化はMySQL
のバージョンによって異なる場合があります。
したがって、具体的な問題に対して具体的な分析を行うために、実践中に研究を行う必要があります。正確な判断ができない場合は、explain
を使用して検証することができます。