インデックスの左端のプレフィックスのMySQLの説明

n列のインデックスを作成するときは、「左端のプレフィックス」の原則に従います

次のテーブルを想定します。テーブルAAAを作成します(a varchar2(32)、b varchar2(32)、c date);

列aとcに通常のインデックスを作成:AAA(a、c);にインデックスiN_AAA_1を作成
1.インデックスの左プレフィックスの最初のレベルは、インデックスの最初のフィールドを使用する必要があることを意味します。select * from AAA where b =:xxx and c = sysdate;インデックスを使用するにはwhereステートメントにaが必要であるため、インデックスは使用されません。
2.インデックスプレフィックスの2番目の意味:インデックスの最初のフィールドでは、likeを使用する場合は左側を固定値にする必要があり、ワイルドカードは右側にのみ表示できます。select * from AAA where like '1%';はインデックスを使用し、select * from AAA where like '%1';はインデックスを使用しません。
3.インデックスプレフィックスの3番目の意味:関数がフィールドの前に追加された場合、インデックスは抑制されます(例:select * from aaa where trim(a)= 1)インデックスは使用されません。
式がフィールドの前に埋め込まれていると、インデックスも抑制されます。aが日付形式であるとすると、ここで+ 7 <sysdateはインデックスを使用せず、<sysdate-7はインデックスを使用します。

 


2つの特別な宣言もあります
。1).select * from AAA where a =:xxx and c = sysdate and select * from AAA where c = sysdate and a =:xxx;インデックスが使用されます。つまり、whereステートメントのフィールド順序は関係ありません。

2).select * from AAA where a =:xxx and b = 1;はインデックスを使用しますが、この時点でAが表示されます。ただし、他のフィールドがインデックスでない場合でも、インデックスは使用されます。

おすすめ

転載: www.cnblogs.com/liliuguang/p/12703744.html