ホームページ >データベース >mysql チュートリアル >MySQLのSQLクエリ実行を分析するために説明を使用するにはどうすればよいですか?
EXPLAIN
を使用してMySQLのSQLクエリ実行を分析するには、SQLクエリにEXPLAIN
キーワードをプレイします。このコマンドは、MySQLがクエリをどのように実行するか、テーブルへのアクセス方法と結合方法、および行のフィルタリング方法を示す詳細情報を提供します。使用方法に関する段階的なガイドを次に示します。
EXPLAIN
:クエリの前にEXPLAIN
を追加します。たとえば、クエリがSELECT * FROM users WHERE age > 18
の場合、 EXPLAIN SELECT * FROM users WHERE age > 18
を実行します。EXPLAIN
コマンドを実行します。出力は表形式になります。出力の分析: EXPLAIN
出力には、クエリ実行に関する洞察を提供するいくつかの列が含まれています。
id
:より大きなステートメント内のクエリの識別子。select_type
: SELECT
操作のタイプ。table
:テーブル名。type
:結合タイプ。テーブルのアクセス方法を示します。possible_keys
:MySQLを使用できるインデックス。key
:MySQLが使用する実際のインデックス。key_len
:使用するインデックスの長さ。ref
:どの列または定数がインデックスと比較されます。rows
:Queryを実行するためにMySQLの推定数を調べる必要があります。filtered
:条件でフィルター処理された行の割合。Extra
:MySQLがクエリを解決する方法に関する追加情報。これらのコンポーネントを分析することにより、クエリの実行計画をよりよく理解し、改善の領域を特定できます。
EXPLAIN
出力を使用してSQLクエリを最適化する場合、次の重要なメトリックを考慮することが不可欠です。
system
、 const
、 eq_ref
、 ref
、 range
、 index
、およびALL
。このリストの前半に表示される方法を目指してください。NULL
)、インデックスを追加することでパフォーマンスが向上する可能性があるという兆候です。key
列で使用されていない潜在的なインデックスがここに表示されている場合は、クエリまたはインデックスの定義を調整する必要がある場合があります。Using filesort
やUsing temporary
などの値を探します。可能な限りこれらを避けたいです。これらのメトリックに焦点を当てることにより、最適化が必要なクエリの領域を特定できます。
EXPLAIN
、次の方法でMySQLクエリのパフォーマンスの問題を特定して解決するための強力なツールになる可能性があります。
EXPLAIN
を説明します。 key
列にNULL
が表示され、 possible_keys
列にいくつかのオプションがリストされている場合、インデックスを改良するか、クエリを調整して効果的に使用する時が来るかもしれません。type
列にALL
表示されている場合、クエリがフルテーブルスキャンを実行していることを意味しますが、これは非効率的です。クエリを変更するか、適切なインデックスを追加してこれを改善することを目指してください。type
列は、使用される結合のタイプも示します。効率の低い結合タイプは、インデックスまたはクエリ構造を調整することにより、より効率的な型に置き換えることができます。Extra
列にUsing filesort
か、 Using temporary
場合、これらはパフォーマンスボトルネックを示します。多くの場合、インデックスを追加または変更することでそれらを排除できます。rows
は、MySQLが調べる行数の推定値を提供します。この数が高い場合、スキャンされた行の数を減らすためにクエリを最適化する必要があることを示唆しています。 EXPLAIN
出力に基づいてこれらの問題に対処することにより、クエリのパフォーマンスを大幅に改善できます。
EXPLAIN
結果に基づいて、SQLクエリに次の特定の改善を実装できます。
key
列にNULL
が表示されている場合は、clausesでWHERE
、 JOIN
、またはORDER BY
使用される列にインデックスを追加することを検討してください。 possible_keys
、未使用のインデックスをリストするには、クエリがこれらのインデックスを効果的に使用するように構造化されていることを確認してください。type
列の効率が低い結合タイプが表示されている場合は、クエリを再構築して、より効率的な結合タイプを使用します。結合列にインデックスを追加すると、結合タイプをALL
またはrange
からeq_ref
またはref
に引き上げることができます。Extra
列がUsing filesort
またはUsing temporary
を示している場合、これらの操作を回避するためにクエリを最適化する方法を探してください。たとえば、列でソートする場合、その列にインデックスを追加するとUsing filesort
排除できます。rows
に高い数が表示されている場合は、クエリのスコープを狭めることを検討してください。これには、よりWHERE
的な条件を使用したり、クエリを再構築してインデックスをより効果的に使用する場合があります。EXPLAIN
出力で非効率的であることが示されているサブ征服が含まれている場合は、パフォーマンスを向上させるために結合または一時テーブルを使用するように書き換えることを検討してください。これらの特定の改善を適用することにより、 EXPLAIN
コマンドからの洞察に導かれるように、SQLクエリの効率を高めることができます。
以上がMySQLのSQLクエリ実行を分析するために説明を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。