mysql 在使用聯合索引時會有乙個最優左字首的乙個原則
其實就是 where條件後跟隨的多個條件字段使用復合索引的乙個規則(引用別人的一句話:帶頭大哥不能死,中間兄弟不能斷)
比如 user表 字段 id name age salary 建立復合索引 (name age salary )
當建立(a,b,c)復合索引時,相當於建立了(a)單列索引,(a,b)組合索引以及(a,b,c)組合索引
想要索引生效的話,只能使用 a和a,b和a,b,c三種組合
1.有帶頭大哥
select * from user where name='qiaofeng' and age= 28 and salary = 11000
此時是走索引的
2.有帶頭大哥,有中間兄弟
select * from user where name='qiaofeng' and age= 28
此時是走索引的
3.有帶頭大哥,沒有中間兄弟
select * from user where name='qiaofeng' and and salary = 11000
此時只有name欄位走索引的, 而salary不走索引
4.沒有帶頭大哥
select * from user where age= 28 and and salary = 11000
此時是沒有匹配索引的
另外,where後條件字段順序不按照索引順序 也是沒問題的,因為mysql 在查詢時會自動根據欄位的最大化的匹配索引
select * from user where age= 28 and name='qiaofeng' 也是走索引的
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索引 錢綴 mysql索引最優左字首
mysql 在使用聯合索引時會有乙個最優左字首的乙個原則 其實就是 where條件後跟隨的多個條件字段使用復合索引的乙個規則 引用別人的一句話 帶頭大哥不能死,中間兄弟不能斷 比如 user表 字段 id name age salary 建立復合索引 name age salary 當建立 a,b,...