複合インデックスの左端の接頭辞の原理について話してください。

分析と回答

MySQL のインデックスは、複数のカラムを特定の順序で参照でき、このタイプのインデックスは複合 (結合) インデックスと呼ばれます。

テーブルTaにインデックスA、B、(C、D)が存在する場合

ルール 1: すべての列と一致する

SELECT * FROM Ta  WHERE E = 'F1' AND A ='10001';
复制代码

インデックスの順序に従っていない場合、mysql クエリ オプティマイザーは、定義されたインデックスを使用するように順序を自動的に調整します。where の条件の順序を逆にしても、効果は同じです。

ルール 2: 左端のプレフィックス一致

SELECT * FROM Ta  WHERE  A ='10001' AND B = 'B001' ;
复制代码

クエリ条件がインデックスの左側にある 1 つまたは複数の連続する列に正確に一致する場合、インデックスの最初の列のプレフィックスのみが使用されます

ルール 3: クエリ条件はインデックスの最初の列を指定しません

SELECT * FROM Ta  WHERE  D = 'D001' ;
复制代码

これは一番左のプレフィックスではないため、インデックスなどのクエリでは明らかにインデックスが使用されません。

ルール 4: 列のプレフィックス文字列と一致します。

SELECT * FROM Ta  WHERE  C LINK 'C001%' ;
复制代码

この時点でインデックスを使用できます。ワイルドカード % が先頭に表示されない場合は、インデックスを使用できます。

ルール 5: 範囲クエリ (範囲クエリの後ろの列はインデックスを使用できません)

範囲条件クエリの場合、MYSQL は範囲の背後にある他のインデックス列を使用できなくなります。ただし、複数の等価条件クエリにはそのような制限はありません。

ルール 6: クエリ条件には関数または式が含まれます

クエリ条件に関数または式が含まれている場合、MySQL はこのカラムにインデックスを使用しません (ただし、数学的な意味で一部は使用できます)。

反映と拡張

合理的なインデックスを作成するにはどうすればよいですか、インデックスを最適化するにはどうすればよいですか?

ニャー インタビュー アシスタント:面接の質問に対するワンストップ ソリューション。WeChat アプレット[ニャー インタビュー アシスタント]を検索するか、 [ニャー ブラシの質問] -> インタビュー アシスタントの 無料質問に 従うことができます。面接に関する優れた知識やスキルをお持ちの方は、ぜひ共有してください。

おすすめ

転載: blog.csdn.net/jjclove/article/details/127391403