索引下推概念在mysql5.6引出,其目的是为了减少回表次数,提升索引查询效率
我们学习过mysql的小伙伴一般都知道,采用B+树的辅助索引叶子结点保存的不是数据,而是当前索引记录对应的主键,现在假设我们需要执行如下查询语句:
select *
from user
where
name like "张%"
and
age = 10
我们来看下mysql不使用索引下推的情况,其会先匹配到name中第一个字为"张"的user,然后就开始回表,查出数据后再判断age是否等于10,进行过滤数据,回表四次
我们再来看一下mysql采用索引下推又会产生什么情况,如下图,mysql在查找辅助索引时,会根据条件结合索引进行筛选,筛选出符合条件的数据才会回表,这样就减少了回表次数,大大提升了查找效率