最も左接頭原則MySQLのインデックス

参考1
参考2
最高の左接頭辞ルール:死ぬことができないビッグブラザーに率先して、真ん中の兄は分割できない
-最高の左接頭辞ルールインデックスのルールを

ベスト左接頭辞ルール学習とデモデモ

1のデータを準備します

表1.1ビルドでは、
コードをコピー

DROP TABLE IFは、スタッフをEXISTS。
CREATE TABLE IF NOTスタッフ(EXISTS
ID INT PRIMARY KEYのAUTO_INCREMENT、
名前VARCHAR(50)、
年齢INT、
POS VARCHAR(50)COMMENT '职位'、
給与DECIMAL(10,2)を
);

コードをコピー

挿入データ1.2

INSERT INTOスタッフ(名前、年齢、POS、給与)VALUES( 'アリス'、22 'HR'、5000);
INSERT INTOスタッフ(名前、年齢、POS、給与)VALUES( 'ボブ'、22 'RD'、10000);
INSERT INTOスタッフ(名前、年齢、POS、給与)VALUES( 'デビッド'、22 '販売'、120000);

2テスト&分析を説明

2.1インデックスの作成

INDEX idx_nameAgePos ONのスタッフ(名前、年齢、POS)を作成します。

インデックス名、年齢、POS三つのフィールドに基づいて作成されました

2.2インデックスのテスト

ケース#1:のみのクエリに名前フィールドに基づいて、

SELECT *をEXPLAINスタッフからのWHERE名= 'アリス';

結果:

type=ref
key=索引
ref=const
ken_len=53

ケース#2:名前&年齢フィールドに基づいてのみクエリ

SELECT *をEXPLAINスタッフからのWHERE名= 'アリス' AND年齢= 22;

結果:ケース#1とほとんど、しかし:

key_len=58
ref=const, const

ケース#3:よる名前&年齢&POS問い合わせへ

スタッフからのSELECT *をEXPLAIN WHERE名= 'アリス' AND年齢= 22とPOS = 'HR';

結果:インデックスがより豊かでケース#2の結果よりkey_lenに参考文献、同時に、力にまだあります

ケース#4:問い合わせに年齢&POSに従って

EXPLAIN SELECT * FROMスタッフ年齢= 22とPOS = 'HR';

結果:なしインデックス、全表スキャンを

ケース#5:名前&POSを照会するためによると

EXPLAIN SELECT * FROM社員名= 'アリス' AND POS = 'HR';

結果:ケース#1と同じ(インデックスフィールド説明POSへのアクセスなし)

3つの総合的な分析

Case1,2,3は、最高の左接頭辞ルールをインデックスと長さを順次増加する(key_lenに= 53,58,111及びREF = 1番目CONST、2番目CONST、3番目CONST)を使用して、インデックスに使用されます。

ケース4のリードではない弟(モスクワ)、その後、全表スキャン。

インデックス、中央兄弟(中間コンパートメント)のCASE5フィールド用途のみ名年齢オフ、次いで、POSに連結された後者の兄弟(キャビン)。

4まとめ

ベスト左接頭辞ルール:死ぬことができないビッグブラザーに率先して、真ん中の兄は分割できません

おすすめ

転載: www.cnblogs.com/djwhome/p/12535827.html