8.索引下推

  • 索引下推可以在非前导列的索引由于某种原因发生了索引失效不会马上回表查询,而且是先返回符合前导列的所有索引,然后判断这些索引是否符合条件再去回表减少回表的次数。
  • 执行计划中的extra是use index condition

  • 索引下推例子1:
select d from t2 where a = "ni" and b = 1;
//b类型转换,导致索引失效。
  • 索引下推的例子2:
  • 索引下推是 MySQL 5.6引入了一种优化技术,默认开启,使用SET optimizer switch ="index condition pushdown=off’ ;可以将其关闭。
  • people表中 `(zipcode,lastname,firstname)` 成一个索引`SELECT* FROM people WHERE zipcode=’ 95054' AND lastname LIKE "%etrunia%’ AND address LIKE%Main Street%'` ;
  • 如果没有使用索引下推技术,则MySQL会通过zipcode=’95054’从存储引擎中查询对应的数据,返回到MySQL服务端,然后MySQL服务端基于lastname LIKE%etrunia%’address LIKE %Main Street%’来判断数据是否符合条件。
  • 如果使用了索引下推技术,则MYSQL首先会返回符合zipcode=’95054’的索引,然后根据lastname LIKE"%etrunia%’来判新索引是否符合条件
  • 如果符合条件,则根据该索引来定位对应的数据,如果不符合,则直接reject掉。 有了索引下推优化,可以在有like条件查询的情况下,减少回表次数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值