MySQL5.6引入了索引下推优化,默认是开启的。
例子:user表中(a,b,c)构成一个索引。
select * from user where a=’23’ and b like ‘%eqw%’ and c like ‘dasd’。
解释
如果没有索引下推原则,则 MySQL 会通过 a=’23’ 先查询出一个对应的数据。然后返回到 MySQL 服务端。MySQL 服务端再基于两个 like 模糊查询来校验 and 查询出的数据是否符合条件。这个过程就设计到回表操作。
如果使用了索引下推技术,则MySQL会首先返回返回条件a=’23’的数据的索引,然后根据模糊查询的条件来校验索引行数据是否符合条件,如果符合条件,则直接根据 索引来定位对应的数据,如果不符合直接 reject 掉。因此,有了索引下推优化,可以在有 like 条件的情况下,减少回表的次数。