Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  EXPLAIN によるクエリーの最適化

8.8.1 EXPLAIN によるクエリーの最適化

EXPLAIN ステートメントを使用して、MySQL がステートメントを実行する方法に関する情報を取得できます。

  • MySQL 5.6.3 現在、EXPLAIN に使用できる説明可能なステートメントは、SELECTDELETEINSERTREPLACE、および 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_nameDESCRIBE tbl_name および SHOW COLUMNS FROM tbl_name と同義です。詳細については、セクション13.8.1「DESCRIBE 構文」およびセクション13.7.5.6「SHOW COLUMNS 構文」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.