MySQL中联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。(组合索引)
失效情况如下:
1、查询条件中有or;
2、列类型字符串条件中需要加引号;
3、like查询条件以%开头;
4、索引列参与计算(>,<,between,like);
5、违背最左匹配原则;
下面举例展开讲解:
如a,b,c联合索引,有效的情况:a | a,b | a,b,c
(1) select * from myTest where a=3 and b=5 and c=4; ---- abc顺序
abc三个索引都在where条件里面用到了,而且都发挥了作用
(2) select * from myTest where c=4 and b=6 and a=3;
where里面的条件顺序在查询之前会被mysql自动优化,效果跟上一句一样
(3) select * from myTest where a=3 and c=7;
a用到索引,b没有用,所以c是没有用到索引效果的
(4) select * from myTest where a=3 and b>7 and c=3; ---- b范围值,断点,阻塞了c的索引
a用到了,b也用到了,c没有用到,这个地方b是范围值,也算断点,只不过自身用到了索引
(5) select * from myTest where b=3 and c=4; --- 联合索引必须