企业网站访问量的第一来源是( ),淘宝官网首页登录注册,网站导航怎么做的,发稿时间是什么意思文章目录 索引下推为什么范围查找Mysql没有用索引下推优化#xff1f; 说到索引下推#xff0c;应该会有不少人对它很陌生的#xff0c;那么什么是索引下推#xff0c;今天我们就来谈谈它到底是什么样#xff1f; 索引下推
索引下推#xff1a;MySQL 5.6 引入的索引下推… 文章目录 索引下推为什么范围查找Mysql没有用索引下推优化 说到索引下推应该会有不少人对它很陌生的那么什么是索引下推今天我们就来谈谈它到底是什么样 索引下推
索引下推MySQL 5.6 引入的索引下推优化Index Condition Pushdown简称ICP) 可以在索引遍历过程中对索引中包含的字段先做判断直接过滤掉不满足条件的记录减少回表次数。like KK%其实就是用到了索引下推优化。
例如对于辅助的联合索引(name,age,position)正常情况按照最左前缀原则SELECT * FROM employees WHERE name like ‘LiLei%’ AND age 22 AND position ‘manager’ 这种情况只会走name字段索引因为根据name字段过滤完得到的索引行里的age和position是无序的无法很好的利用索引。
在MySQL5.6之前的版本这个查询只能在联合索引里匹配到名字是 ‘LiLei’ 开头的索引然后拿这些索引对应的主键逐个回表到主键索引上找出相应的记录再比对age和position这两个字段的值是否符合。MySQL 5.6引入了索引下推优化可以在索引遍历过程中对索引中包含的所有字段先做判断过滤掉不符合条件的记录之后再回表可以有效的减少回表次数。使用了索引下推优化后上面那个查询在联合索引里匹配到名字是 ‘LiLei’ 开头的索引之后同时还会在索引里过滤age和position这两个字段拿着过滤完剩下的索引对应的主键id再回表查整行数据。索引下推会减少回表次数对于innodb引擎的表索引下推只能用于二级索引innodb的主键索引聚簇索引树叶子节点上保存的是全行数据所以这个时候索引下推并不会起到减少查询全行数据的效果。
回表当查询的数据在索引树中找不到的时候需要回到主键索引树中去获取这个过程叫做回表。
为什么范围查找Mysql没有用索引下推优化
估计应该是Mysql认为范围查找过滤的结果集过大like KK% 在绝大多数情况来看过滤后的结果集比较小所以这里Mysql选择给 like KK% 用了索引下推优化当然这也不是绝对的有时like KK% 也不一定就会走索引下推。