索引(条件)下推:(ICP)

例如:

聚合索引 zipcode_lastname_id

EXPLAIN SELECT * FROM people

WHERE zipcode = ‘00001’

AND lastname LIKE ‘%张%’

AND address LIKE ‘%北京%’

上述SQL语句就使用到索引下推,lastname的模糊查询导致索引失效,但是优化器并没有在使用完zipcode字段索引后就进行回表去查询数据,而是直接对lastname进行模糊查询,再过滤掉一部分数据后再进行回表,这种情况就叫索引下推(ICP)

ICP使用条件:

1.ICP可以用于InnoDB和MyISAM表,对于InnoDB表,ICP仅用于二级索引。ICP的目标是减少全行读取次数,从而减少IO操作

2.当SQL使用覆盖索引时,不支持ICP

3.相关子查询不能使用ICP