讲一讲索引下推

索引下推指的是在联合索引中,当搜索的索引字段被中断后,在遍历已确定要回表的结果集中 继续使用后面的索引字段进行匹配,只有匹配到的才回表查询的机制

 

举个例子:

a,b 联合索引

select * from test where a like 'k%' and b=1

 

按最左前缀原理,当利用索引查询完a之后就不会继续用b进行查询了,而是直接将在联合索引中查询到的匹配a的条件的主键逐个回表查询,而索引下推就是在回表前都先判断下b是否符合条件,符合才回表,不符合就不用回表,这里就减少了回表次数从而优化了性能.

 

 

而且其实下不下推不同数据量场景下可能也不一定,这其实就是优化器选择用不用索引的问题,我们可以通过trace来查看优化器是怎么选择的,大致就是分别计算全表扫描的cost和使用索引的cost,哪个cost小用哪个.

你可能感兴趣的:(3.mysql,mysql,索引)