加载中...

索引下推(Index Condition Pushdown,ICP)是 MySQL 5.6 引入的查询优化技术:将 WHERE 子句中可以用索引列计算的过滤条件,从服务器层下推到存储引擎层,在遍历索引时就地过滤,避免对不满足条件的行执行回表。
以联合索引 (name, age) 为例,查询 WHERE name LIKE '张%' AND age = 20:没有 ICP 时,引擎按前缀找到所有姓张的记录,逐条回表后再由服务器层判断 age;启用 ICP 后,引擎在扫描索引条目时直接用索引中的 age 值过滤,只有同时满足两个条件的记录才回表取整行。
ICP 显著减少回表 IO 与引擎和服务器层之间的交互,执行计划的 Extra 列显示 Using index condition。它适用于二级索引的范围、前缀等扫描,不适用于覆盖索引(无需回表)和聚簇索引主查询,虚拟列与子查询条件也无法下推。

登录 后参与讨论
暂无讨论,来发表第一条评论吧