索引下推是5.6版本才拉出来的一个概念。
意思是在联合索引中,先从索引中进行筛选,下推到所有的索引列,从最终结果中再回表查询,从而减少回表的次数,加快查询速度。
下面来个例子进行讲解:
数据表如下
建立一个联合索引(username,age)
执行的SQL语句为select * from user where username like ‘张%’ and age >10;
图解回表的记录
从5.6之前:
会匹配username,发现id是3和4符合条件,然后回表两次查询id是3和4的记录,再对两条进行age条件的筛选。发现只有4符合,返回4的记录,这种会造成多次回表。
但是在5.6之后:
MySQL就修复了这个问题,推出了索引下推的概念,会在索引里根据username匹配完之后会下推到下一个age的条件,发现只有4符合条件,就根据id为4进行回表,这样就减少了回表的记录。这就是索引下推。