MySQL联合索引失效的情况

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; --- 联合索引必须

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值