最基礎:索引的使用,盡量能夠做到一一對應每條資料表中的資料。
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...