MySQL索引的最左字首原理與查詢的相關優化

2021-07-16 23:31:53 字數 486 閱讀 8933

最基礎:索引的使用,盡量能夠做到一一對應每條資料表中的資料。

1)全列匹配,當按照索引中所有列進行精確匹配時,索引可以被用到,理論上,索引

對順序是敏感的,但是由於mysql的查詢優化器會自動調整where子句中

的條件順序以使用合適的索引。

2)最左字首匹配,當查詢條件精確匹配索引的左邊連續乙個或幾個列時,

索引可以被用到,但是只能用到一部分,即條件所組成的最左字首。

3)查詢條件用到索引中列的精確匹配,但是中間某個條件未提供。此時情況

和2)一樣,會使用索引,只不過是使用一部分索引。

4)查詢沒有指定索引第一列,由於不是最左字首,索引這樣的查詢不會用到索引。

5)匹配某列的字首索引,此時可以用到索引,但是如果萬用字元不是只出現在末尾,

則無法使用索引。

6)範圍查詢,可以用到最左字首匹配的索引,但是範圍列後面的列無法用到索引。

7)查詢中有函式或者表示式,mysql不會使用索引

mysql中索引最左字首 索引最左字首匹配原則

如果索引字串的前面n個字元都不相同,那麼最好不要索引整個資料列,二十索引前n個字元,這樣可以節省大量空間。如果在資料列a,b,c上建立了復合索引,索引中的資料行按照a b c次序排列,因此資料表會自動的按照a b和a排列,即使指定了a,或者a和b的值,mysql也可以使用這個索引。這個索引可以用於如...

mysql最左字首 mysql索引之最左字首法則

1 最左字首法則 如果你的索引有多個字段,如圖1所示,索引欄位有 kq time,card no,kq type這三個字段 最左字首就是按這三個欄位的前後順序進行排序的 如果是三個查詢條件中三個欄位都用到了,如圖二 嚴格按照最左字首原則,查詢條件順序是使用了三個字段 kq time,card no,...

mysql索引的最左字首原則

1.我們先建立表 create table test a int b int,c int,d int,key index abc a,b,c engine innodb default charset utf8 2.插入一些資料 drop procedure if exists proc initd...