覆盖索引解决like ‘%ab’索引失效

我们在使用like 通配符有下面三种用法,其中第1和第2的用法会引起索引失效的问题。这是因为MySQL的索引是按照从左到右的顺序进行匹配的,而前导通配符(比如%abc)会导致无法按照索引顺序进行匹配。

1、like '%name'   ——> 失效

2、like '%name%'  ——> 失效

3、like 'name%'

现在来说下解决方案:

1. 为需要进行模糊查询的name字段增加一个联合索引,比如name 和 age

 2.  Select 后面查询的字段必须要带上 name 和 age, 这样的查询就是覆盖索引查询

 3.用关键字Explain, 可以看到我们的模糊查询sql是有用上索引的

覆盖索引定义:MySQL 执行计划 explain 结果里的 key 有使用索引,如果 select 后面查询的字段都可以从这个索引的树中获取,这种情况一般可以说是用到了覆盖索引,extra 里一般都有 using index;覆盖索引一般针对的是辅助索引,整个査询结果只通过辅助索引就能拿到结果,不需要通过辅助索引树找到主键,再通过主键去主键索引树里获取其它字段值。

1.覆盖索引是一种数据查询方式,不是索引类型
2.在索引数据结构中,通过索引值可以直接找到要查询字段的值,而不需要通过主键值回表查询,那么就叫覆盖索引
3.查询的字段被使用到的索引树全部覆盖到
————————————————

原文链接:https://blog.csdn.net/aryyya/article/details/129968367

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值