MySQL での EXPLAIN
の使用法と具体的なコード例
MySQL では、EXPLAIN
は、クエリ ステートメントの実行計画を分析するのに非常に便利なツールです。これは、MySQL がクエリを処理する方法を理解するのに役立ち、クエリのパフォーマンスを最適化するための重要なリファレンスを提供します。
の使用方法 EXPLAIN
をクエリ分析に使用するには、分析対象のクエリ文を EXPLAIN
の後に置くだけです。キーワード、例:
EXPLAIN SELECT * FROM users WHERE age > 18;
EXPLAIN
分析結果は、主に次のような多数の列を含む表の形式で表示されます。次のフィールド:
id
: クエリのシーケンス番号を示します。クエリがネストされている場合、対応するネスト レベルの ID も増加します。 select_type
: 単純なクエリ、結合クエリ、サブクエリなどのクエリのタイプを示します。 table
: このデータ行がどのテーブルに関連付けられているかを示します。 type
: フルテーブルスキャン、インデックススキャン、範囲スキャンなど、テーブルにアクセスする方法を示します。 possible_keys
: 使用できるインデックスを示します。 key
: 実際に使用されるインデックスを示します。 key_len
: インデックス フィールドの長さを示します。 ref
: 参照を表す定数または列。 rows
: スキャンされた行数を示します。 Extra
: 一時テーブルの使用、ファイルの並べ替えなど、その他の情報を示します。 解釈結果を分析することで、パフォーマンスを最適化できます。一般的な最適化ケースのいくつかを次に示します:
possible_keys
フィールドと key
フィールドを分析して、適切なインデックスが使用されているかどうかを判断します。 key
が NULL
の場合、インデックスが使用されていないことを意味するため、クエリを最適化するためにインデックスの作成を検討する必要があります。 rows
フィールドを分析して、クエリによってスキャンされる行数が多すぎるかどうかを判断します。スキャンされた行の数が多い場合は、スキャンされた行の数を減らすためにクエリを書き直すことを検討してください。 select_type
フィールドを分析してクエリ タイプを決定します。たとえば、クエリがサブクエリの場合、クエリのパフォーマンスを向上させるために、サブクエリの代わりに JOIN の使用を検討することをお勧めします。 table
フィールドを分析することで、複数のテーブル関連付けがあるかどうか、また一時テーブルの使用を減らすためにテーブル関連付けの順序を調整する必要があるかどうかを判断します。 次は、使用方法を示すサンプル コードです。EXPLAIN
:
EXPLAIN SELECT * FROM orders WHERE customer_id = 100;
上記のコードを実行します。同様の結果が得られます:
+----+-------------+--------+-------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+--------+-------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | orders | const | customer_id | id | 4 | const|1 | NULL | +----+-------------+--------+-------+---------------+------+---------+------+------+-------+
この結果を観察すると、次の情報が得られます:
この情報から、このクエリはインデックスを使用し、1 行のみをスキャンするため、パフォーマンスが優れていると判断できます。
EXPLAIN
を使用すると、クエリ ステートメントの実行計画を分析してパフォーマンスを最適化できます。クエリの種類、インデックスの使用状況、スキャンされた行数などの情報を分析することで、クエリを最適化する必要があるかどうかを判断し、どの最適化戦略を採用するかを決定できます。 EXPLAIN
は MySQL の最適化において非常に重要なツールであり、MySQL の実行計画を理解し、クエリのパフォーマンスを向上させるのに役立ちます。
以上がMySQL での EXPLAIN を使用したクエリの最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。