MySQL中不会命中索引的情况

表与索引

我们简单建了一张表,如下:
image.png
我们建立了两个索引,分别为主键索引id和普通索引product_id
image.png

是否命中索引

where 条件中带 or会不会命中索引?

如果我们的where条件中存在or,及时其中带索引,也不会命中索引。这也是为什么尽量使用or的原因
我们通过主键索引查询,可以看见命中了索引:
image.png
而我们在where 条件后面加上or之后,就不会命中索引了:
image.png
如果我们想用or又想让它命中索引,那么只能将or条件中的每一列都加上索引了:
image.png
所以,如果or中有一个条件没有索引的时候,还是建议使用union操作,将多个查询语句拼装在一起:

like查询中会不会命中索引?

image.png
可以看到如果用like查询的话,%在右边会命中索引的,而%在左边则不会。当然这也不是绝对的,当我们使用索引列进行查询的时候,就都会命中索引了:
image.png

负向查询条件会不会用到索引?

NOT IN,NOT LIKE,NOT EXTSTS都不会命中索引

参考:https://github.com/nuptkwz/notes/tree/master/technology/mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值