実施計画を説明MYSQL(最適化戦略)

説明MySQLの 

つまり、10があるから情報を説明します。

ID、SELECT_TYPE、テーブル、タイプ、possible_keys、キー、key_lenに、REF、行、エクストラ

概要説明:
上記ID上述:識別子選択
SELECT_TYPEは、クエリの種類を示します。
表:表出力結果セットの
パーティション:マッチングパーティション
タイプ:接続テーブルの種類を表し
照会するとき、インデックスを使用することができる:possible_keys
キー:インデックスが実際に使用示し
key_lenに:インデックスフィールドの長さ
REF:インデックスの比較列
の行を:スキャンライン数(行の推定数)
、濾過:濾過率テーブル行条件を
追加:実装が説明および図示

 

A、ID     

SELECT識別子。これは、SELECTクエリシーケンス番号です

私の理解では、SQL識別子の実行順序は、SQL降順を実行することです

1. IDは、上から下への順序と同じです

2.サブクエリは、IDシリアル番号が最初に実行される、より高い優先順位の高い、ID値をインクリメントする場合

3.同じIDが、実行ダウンの順序から、グループとして考えることができる場合は、全ての群において、より大きなID値、優先順位の高い、最初の実行

二、クエリselect句の各タイプをSELECT_TYPE

1:SIMPLE(シンプルSELECT、UNIONやサブクエリを使用していません)

2:PRIMARY(サブクエリ最も外側のクエリ、クエリが複雑なサブ部分を含む場合、最外層がPRIMARY選択としてマークされています)

3:UNION(UNIONの二回目以降のSELECT文)

4:DEPENDENT UNION(UNIONの第二またはクエリの外側に応じ後SELECT文)

5:UNION結果(第2以降のスタートUNIONの結果、労働組合のすべてのselect文を選択)

6:SUBQUERY(最初のサブクエリのSELECT、結果は外部クエリに依存しません)

7:DEPENDENT SUBQUERY(最初のサブクエリSELECT、外部クエリに依存して)

8:由来(派生テーブルSELECT句のサブクエリFROM)

9:UNCACHEABLE SUBQUERY(サブクエリの結果をキャッシュすることができない、それは再評価最初の行がリンクされなければなりません)

三、テーブル

データベーステーブル名にアクセスするために、ディスプレイのこのステップ、時々ではない実際のテーブル名(このラインに表示データがテーブルが何であるかである)、例えば、上記eは、dは、それが最初のステップの実施の結果であり得る、と呼ぶことができます略し

四、タイプ

テーブルのアクセス方法は、としても知られているテーブル内の所望の線、表現する方法を見つけるのMySQL「アクセスタイプ」を

一般的なタイプ:ALL、インデックス、範囲、REF、でeq_ref、constの、システム、NULL;良好なパフォーマンスに貧しいから、左から右へ

1:ALL:全表スキャンは、MySQLは一致する行を見つけるために、テーブル全体を横断します

2:インデックス:フルインデックススキャン、インデックスとインデックスの種類ALLのみインデックスツリーをトラバース区別するために

3:範囲:行を選択するためにインデックスを使用して、唯一のライン所定の範囲に取り出します

4:REFは:インデックス列の列または定数値を見つけるために使用される接続テーブルの整合状態を示します

5:でeq_ref:REFは、同様に、各インデックスキーの一意の索引を使用率の差は、単に置くテーブルマッチに1つのレコードのみが、マルチテーブルは主キーまたは状態に関連する一意のキーとして結合を使用することです

5:CONST、システム:MySQLのクエリの最適化の一部、および、アクセスのこれらのタイプを使用して、定数に変換されたとき。ここで主キーのリスト配置され、MySQLが一定にクエリを変換することができ、システムのconst型は、テーブルのクエリの唯一の行は、システムを使用する場合には、特殊なケースであります

6:NULL:行う場合、最適化プロセスでのMySQL分解文も、テーブルまたはインデックスへのアクセスなしでは、例えば、最小値で索引付けされた列から選択は、個別のインデックス・ルックアップを介して行うことができます。 

五、possible_keys

何のインデックス表示ヌルが存在しない場合は、インデックスがある場合は、インデックスが関与フィールドに表示されますクエリ、MySQLはテーブル内のレコードを検索するために使用することができますどのインデックスを示しているが、必ずしもインデックス(クエリを利用することができますを使用して照会できません)

この列は、出力をEXPLAIN示す順序テーブルの完全に独立しています。実際にいくつかの重要possible_keysは順序テーブルを使用して生成することができないことをこれが意味。
列はNULL、無関連の指標である場合。それはあなたのクエリのパフォーマンスを向上させるために、インデックスのためのいくつかの列または列を参照する場合は、このケースでは、WHERE句を調べることによって確認することができます。その場合は、適切なインデックスを作成し、EXPLAINでクエリをもう一度確認してください

六、キー

MySQLのキー列が示すキー(インデックス)を使用する実際の決定は、possible_keysに含まれている必要があります

あなたは、インデックスを選択しない場合、キーはNULLです。使用にMySQLを強制したりpossible_keys列のインデックス、クエリで使用するFORCE INDEX、USE INDEXを無視するか、INDEXを無視します。

七、key_lenに

、インデックスがクエリに使用することができるインデックスに使用されるバイトの数は、インデックスフィールドの最大可能長さの値は、key_lenに表示される列の長さ(はなく、実際の長さ、すなわち、によって算出されていることを示し、基準key_lenにテーブル定義にない計算されますテーブルによって取得)

精度を失うことなく、可能な限り短い長さとして 

八、REF

列インデックスとの比較は、インデックス列の値を見つけるために使用される列または定数すなわち、上記の表に整合条件の接続を示し

九、行

 結果セットの行数を推定し、MySQLのテーブルの統計情報とインデックスの選択を示すためによると、行の推定数を読み出すべきレコードを検索するために必要な

 

 

テン、エクストラ

このカラムには、MySQLのクエリ、次のような状況を解決するための詳細な情報が含まれています。

1:使用してここで、インデックスのみが同じインデックスは、MySQLサーバストレージエンジンで発現されるすべての部品のリストの要求時に発生するデータを得ることができるすべてのテーブル内の情報を読んでいません行を取得し、次いで濾過

2:一時的な使用:MySQLは、ソートおよびグループ化クエリに共通の結果セットを格納する一時テーブルを使用する必要性を表明し、共通のグループによって、ORDER BY

3:filesortレコードの使用:クエリ操作によって順番が含まれており、「ソートファイル」と呼ばれるソート操作を完了するために、インデックスを使用することはできません

4:バッファに参加使用:インデックスの値を変更するために使用する接続状態を得ながら強調し、中間結果を格納するバッファを接続する必要がありません。この値が存在する場合、それは注意しなければならない、あなたを向上させることができるクエリの特定の状況に基づいてインデックスを追加する必要があるかもしれません。

5:インポッシブル場所:文は何の修飾行(統計情報を収集することによっては不可能な結果が存在しない)が発生する場所、この値が強調表示されています。

6:のみのみインデックス値を使用して、リターンラインをもたらすことができる集計関数は、オプティマイザを意味選択テーブルが離れて最適化

7:いいえテーブルが使用:クエリ文を句のいずれかからの二重使用またはフリーから

 

 

要約:

・クエリー機能をカスタマイズするためにあなたを教えてくれませんEXPLAINトリガ、ストアドプロシージャやユーザー情報の状況に影響を及ぼし

・EXPLAINキャッシュを考慮していません

・MySQLの最適化作業は、クエリの実行で行われ表示されませんEXPLAIN

•部分的な統計は推計ではなく、正確な値であり、

・EXPALINはSELECT操作、実行計画を見た後にSELECTのように書き換えることにする他の操作を説明することができます。

公開された50元の記事 ウォンの賞賛2 ビュー2326

おすすめ

転載: blog.csdn.net/eafun_888/article/details/96565557