さまざまなアプリケーションがデータの保存に MySQL を使用することがよくあります。MySQL は一般的なリレーショナル データベース管理システムです。大量のデータが関与する場合、データベース クエリのパフォーマンスが重要な要素となるため、クエリ ステートメントを最適化するために MySQL の Explain 機能が必要になります。
MySQL Explain ツールは、クエリ ステートメントの分析と最適化に使用されるツールです。クエリ ステートメントのパフォーマンスを評価したい場合は、explain コマンドを使用して MySQL 実行プランを表示できます。 Explain コマンドを使用すると、クエリで使用されたインデックス、テーブル間の接続方法、実行手順など、クエリの実行に関する詳細情報を取得できます。この情報を使用すると、クエリ ステートメントを最適化し、クエリのパフォーマンスを向上させることができます。
MySQL の Explain 関数は、クエリ文の前にキーワード Explain を追加するだけで簡単に使用できます。たとえば、次のクエリ ステートメントがあるとします。
SELECT * FROM user WHERE name = '小明';
次のコマンドを通じてクエリの実行プランを取得できます。
EXPLAIN SELECT * FROM user WHERE name = '小明';
このコマンドは、クエリの実行プランを含むテーブルを返します。 , ここで、各行は実行ステップを表します。テーブルの列には次のものが含まれます:
id: 各 SELECT の一意の識別子サブクエリがある場合は、複数の ID 値が存在します。
select_type: クエリ タイプ。一般的なものには、Simple、Primary、Subquery、Derived、Union、Union Result があります。
table: クエリに含まれるテーブルの名前。
partitions: 関係するパーティションの名前をクエリします。
type: system、const、eq_ref、ref、range、index などを含む結合タイプ。
possible_keys: 使用可能なインデックス。
key: 実際に使用されるインデックス。
key_len: 使用されるインデックスの長さ。
ref: カラムとインデックスの関係。
rows: 返される行数。
filtered: 合計行数に対するパーセンテージとして返される行数。
追加: 使用されるインデックス、使用されるアルゴリズムなどのその他の追加情報。
クエリ実行プランを分析してクエリ ステートメント内のパフォーマンスの問題を特定し、さらに最適化することができます。一般的なパフォーマンスの問題と解決策は次のとおりです。
クエリ ステートメントで不要な列が使用されています
クエリ ステートメントで不要な列が使用されている場合、システムリソースとクエリ時間を無駄にします。クエリ実行プランでは、この状況は通常、「ファイルソートを使用しています」または「一時ファイルを使用しています」というメッセージとして表示されます。この問題を解決するには、必要な列のみをクエリし、不要な列のクエリを回避することです。SELECT 句の列リストを使用して、クエリによって返される必要がある列を指定できます。
SELECT * FROM orders o WHERE EXISTS ( SELECT 1 FROM customers c WHERE o.customer_id = c.customer_id AND c.country = '中国' );
以上がMySQL Explain はクエリプランに基づいて SQL ステートメントを最適化します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。