索引下推(index condition pushdown )簡稱ICP,在Mysql5.6的版本上推出,用於優化查詢。
- 在不使用ICP的情況下,在使用非主鍵索引(又叫普通索引或者二級索引)進行查詢時,存儲引擎通過索引檢索到數據,然后返回給MySQL服務器,服務器然后判斷數據是否符合條件 。
- 在使用ICP的情況下,如果存在某些被索引的列的判斷條件時,MySQL服務器將這一部分判斷條件傳遞給存儲引擎,然后由存儲引擎通過判斷索引是否符合MySQL服務器傳遞的條件,只有當索引符合條件時才會將數據檢索出來返回給MySQL服務器 。
- 索引條件下推優化可以減少存儲引擎查詢基礎表的次數,也可以減少MySQL服務器從存儲引擎接收數據的次數。
- 索引下推在非主鍵索引上的優化,可以有效減少回表的次數,大大提升了查詢的效率。
- 關閉索引下推可以使用如下命令
set optimizer_switch='index_condition_pushdown=off';
