当前位置:Gxlcms > 数据库问题 > MySQL中Index Condition Pushdown(ICP)优化

MySQL中Index Condition Pushdown(ICP)优化

时间:2021-07-01 10:21:17 帮助过:2人阅读

* FROM people WHERE zipcode=95054 AND lastname like %etrunia% AND address LIKE %Main Street%;

对于上述语句,数据库可以通过索引来定位zipcode等于95054的记录,但是索引对where条件的lastname LIKE ‘%etrunia%‘ AND address like ‘%Main Street%‘没有任何帮助。若不支持ICP优化,数据库需要先通过索引取出所有zipcode等于95054的记录,然后在过滤WHERE之后的两个条件

若支持ICP,在索引取出时,就会进行WHERE条件的过滤,然后再去获取记录。这将大大提高查询效率。当然,WHERE可以过滤的条件时要改索引可以覆盖的范围

 

SELECT * FROM salaries 
WHERE(from_date between ‘‘1986-01-01 AND 1995-01-01)
AND(salary between 38000 and 40000);

技术分享

可以看到Extra有Using index condition提示,但是为什么会在这里的idx_s索引会使用到ICP优化呢?因为这张表的主键是(emp_no,from_date)联合索引。所以idx_s索引中包含了from_date的数据,故可以采用此优化方式

对比同时开启MRR后的执行时间

技术分享

可以看到同时开启MRR后性能提示400%

 

MySQL中Index Condition Pushdown(ICP)优化

标签:

人气教程排行