一般的なインデックスタイプ
- PROMARY KEYプライマリキーインデックスも、重複データを許可しない唯一のインデックスです。
- UNIQUE INDEX一意のインデックス。重複データは許可されません。
- INDEX通常インデックスでは、データの重複が許可されます。
- 複合インデックスは、複数のフィールドにインデックスを追加します。上記のいくつかは複合インデックスとして設定できます。複合インデックスは、左端のプレフィックスマッチングの原則を満たす必要があります。
ここで議論の余地があります。結合インデックス(a、b)がある場合、列bはSQLクエリで個別に使用されます。ExplainはSQLの説明に使用されます。インデックスを使用して追加のフィールドが表示されることがわかります。 、インデックスが同じではありません取ることはありません
SQLのような実際には二つのフィールドのインデックスの順列と組み合わせがあるためorder by a,b
に基づいて注文したBの一種で、Bはそのため、効率的に最も左のプレフィックスの前提を見つけるために満たされますbを単独で使用すると、使用中のインデックスが表示されますが、現時点ではbの順序が乱れているため、効率的に検索できず、集計インデックスは使用されません。
インデックスの最適化には、共通の知識ポイントも含まれます。表に戻る
非主キーインデックスはデータとインデックスフィールドの主キー値を格納するため、主キーインデックスはデータの行全体を格納します。クエリのデータにインデックスに対応しないフィールドが含まれている場合、データはインデックスに格納されている主キーに従って再度チェックされます。このプロセスはテーブルにコールバックされます。
もしT([PROMARY KEY]、 B、C、D) 我々は、インデックス時間増分CREATE INDEX b_c ON t(b,c)
クエリ操作を実行するSELECT b,c,d FROM t where b = xxx
インデックスと、主キーフィールドBCの値の組み合わせのみが、主キーテーブル再度テーブル[チェックの値を返す必要があるためにdを入手してください。
クエリ操作を実行しSELECT b,c,a FROM t where b = xxx
、インデックス値BCフィールドのみ、主キーの組み合わせは、一度テーブルに操作バックを回避するために必要な値のすべてを取得するため。
- したがって、クエリ処理中にテーブルに戻らないようにして、SQLパフォーマンスを向上させることができます。
以下は、一般的に使用されるインデックス操作の照合です。
-
インデックスを増やす:
CREATE INDEX b_c ON table_name(b,c)
またはALTER TABLE table_name ADD 索引类型 (unique,primary key,index)[索引名](字段名)
-
インデックスを削除します:
DROP INDEX index_name on table_name
またはALTER TABLE table_name DROP INDEX index_name
またはALTER TABLE table_name DROP PROMARY KEY
-
インデックスを表示:
SHOW INDEX FROM table_name
-
分析インデックス:SQLの前にキーワードExplainを追加します