[MySQLの2019年9月29日]のコメントを説明

インデックスの使用は、我々はインデックスMySQLのテーブルを確立し、それの後にどのように確認してください?

この時、私たちは支援するプログラムの実施を説明する必要があります。

1.文法

EXPLAIN 

SELECT COLUMN1、COLUMN2 から テーブル [どこ ... ]

 

2.explain詳細

 

2.1概要の説明:

 ID:選択識別子
SELECT_TYPEは:クエリのタイプを示します。
表:表出力結果セット
タイプ:接続のタイプを示す表
possible_keys:問合せを表し、インデックスを使用することができる
キー:インデックスが実際に使用示す
インデックスフィールドを完全に利用されている:key_lenに
インデックスの比較カラム:REF
行を:スキャン数(行の推定数)行
エクストラ:実装は、説明および図示します

2.2 SELECT_TYPE:クエリSELECT句の各タイプを表示

(1)SIMPLE(単純なSELECT、UNIONまたはサブクエリを使用していません)

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

(3)UNION(UNION第二以降のSELECT文)

(4)(クエリの外側に応じて第二以降のSELECT文のUNION)DEPENDENT UNION

(5)UNION結果(UNIONの結果、第2の選択ステートメント後に始まる組合すべてを選択)

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

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

(8)(節サブクエリから派生テーブルSELECT)に由来

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

2.3タイプ:MySQLは、テーブルに必要な行を識別するための方法を見つけます

一般的に使用されるタイプは次のとおりです。 ALL、インデックス、レンジ、REF、でeq_ref、constの、システム、(良好なパフォーマンスに貧しいから、左から右へ)NULL

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

インデックス:フルインデックススキャン、インデックスとインデックスタイプのみALL横断インデックスツリーを区別するために

範囲は:行のみを選択するためにインデックスを使用して、与えられた範囲の行を検索します

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

でeq_ref:REF同様に、各インデックスキーの一意なインデックスを使用してインデックスの差が、テーブルのマッチに1つのレコードのみ、簡単に言えば、主キーまたは状態に関連する一意のキーとして、マルチテーブルを使用参加します

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

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

2.4キー:インデックス実際に使用MySQLを表示します

2.5 key_lenに:インデックスが完全にMySQLを利用しているかどうかを示し

key_lenにアルゴリズム:

(1)VARCHAR = 2、CHAR = 0、インデックスフィールドのタイプにも関します

(2)文字セットインデックスフィールドについて、UTF-8 = 3

(3)インデックスフィールドの長さに関連し、

(4)と、関連するインデックスフィールドを1 = NULL、0 = NULL、空ではありません

key_lenに=(1)+(2)*(3)+(4)

組合せインデックスで使用される場合、各フィールドは別々に添加した後に計算します

 

EXPALINは、SELECTの実行計画を表示書き換えるSELECT操作、その他の操作を説明することができます

 

おすすめ

転載: www.cnblogs.com/shijt/p/11605640.html