A、B、C三个字段组成联合索引,执行SQL语句时走索引情况主要有如下几种:
走全部索引:ABC
走部分索引:AB、AC、A
不走索引:BC、B、C
对于联合索引,如果想要SQL走索引那么必须符合最左前缀原则,即最左侧第一个字段不能少,中间不能断(如果断开则只走部分索引或不走索引)。
如果查询语句走了索引(不分全部还是部分),那么使用的索引字段越多则索引长度(EXPLAIN的key_len字段值)越长,毫无疑问走全部索引ABC的key_len数值是最大的,然后是走部分索引AB,最后是AC和A(两者key_len相同)。
提醒1:WHERE条件里面字段的顺序不会影响走索引,如“WHERE `A` = 'aaa' AND `B` = 'bbb' AND `C` = 'ccc'”和“WHERE `B` = 'bbb' AND `C` = 'ccc' AND `A` = 'aaa'”这两个查询条件都会走全部索引。
提醒2:建立联合索引会比多个单列索引更好。
提醒3:建立联合索引时应该把最常用作WHERE条件的字段放在最左边。