インデックスの使用は、我々はインデックス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操作、その他の操作を説明することができます