EXPLAIN
ステートメントを使用して、MySQL がステートメントを実行する方法に関する情報を取得できます。
MySQL 5.6.3 現在、
EXPLAIN
に使用できる説明可能なステートメントは、SELECT
、DELETE
、INSERT
、REPLACE
、およびUPDATE
です。MySQL 5.6.3 より前では、SELECT
が唯一の説明可能なステートメントです。説明可能なステートメントで
EXPLAIN
を使用すると、MySQL は、オプティマイザからのステートメント実行プランに関する情報を表示します。つまり、MySQL はテーブルがどのように、どんな順番で結合されているかに関する情報を含む、ステートメントを処理する方法を説明します。EXPLAIN
を使用して、実行プラン情報を取得することについては、セクション8.8.2「EXPLAIN 出力フォーマット」を参照してください。EXPLAIN EXTENDED
を使用して、追加の実行プラン情報を取得できます。セクション8.8.3「EXPLAIN EXTENDED 出力フォーマット」を参照してください。EXPLAIN PARTITIONS
は、パーティション化されたテーブルを含むクエリーの調査に役立ちます。セクション19.3.5「パーティションに関する情報を取得する」を参照してください。MySQL 5.6.3 現在、
FORMAT
オプションを使用して、出力フォーマットを選択できます。TRADITIONAL
は表形式で出力を表示します。FORMAT
オプションが存在しない場合、これはデフォルトです。JSON
フォーマットは JSON フォーマットで情報を表示します。FORMAT = JSON
を使用すると、出力には拡張されたパーティション情報が含まれます。
EXPLAIN
によって、インデックスを使用して行を見つけることで、ステートメントが高速に実行されるように、テーブルにインデックスを追加するべき場所がわかります。また、EXPLAIN
を使用して、オプティマイザがテーブルを最適な順序で結合しているかどうかを確認することもできます。SELECT
ステートメントでテーブルが指定されている順序に対応する結合順序を使用するように、オプティマイザにヒントを提供するには、ステートメントを SELECT
だけでなく、SELECT STRAIGHT_JOIN
で始めます。(セクション13.2.9「SELECT 構文」を参照してください。)
インデックスが使われるはずであると思うタイミングでそれらが使われていない問題がある場合、ANALYZE TABLE
を実行して、オプティマイザが行う選択に影響する可能性があるキーのカーディナリティーなどのテーブル統計を更新します。セクション13.7.2.1「ANALYZE TABLE 構文」を参照してください。
EXPLAIN
はテーブル内のカラムに関する情報を取得するためにも使用できます。EXPLAIN
は tbl_name
DESCRIBE
および tbl_name
SHOW COLUMNS FROM
と同義です。詳細については、セクション13.8.1「DESCRIBE 構文」およびセクション13.7.5.6「SHOW COLUMNS 構文」を参照してください。
tbl_name