8.索引下推

索引下推是MySQL5.6引入的优化策略,用于减少回表查询的次数。当查询条件包含非前导列时,如果索引失效,系统不会立即回表,而是先检查前导列匹配的索引,再对这些索引应用剩余条件。举例来说,对于people表的(zipcode,lastname,firstname)索引,使用索引下推能在like查询时,先过滤掉部分不匹配的索引,从而提高查询效率。
摘要由CSDN通过智能技术生成

● 索引下推可以在非前导列的索引由于某种原因发生了索引失效,不会马上回表查询,而且是先返回符合前导列的所有索引,然后判断这些索引是否符合条件,再去回表。减少回表的次数。
● 执行计划中的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、付费专栏及课程。

余额充值