对于团结索引(a, b),在实行 select * from table where a > 1 and b = 2 语句的时候,只有 a 字段能用到索引,那在团结索引的 B+Tree 找到第一个满足条件的主键值(ID 为 2)后,还需要判断其他条件是否满足(看 b 是否等于 2),那是在团结索引里判断?照旧回主键索引去判断呢?不使用ICP的环境(set optimizer_switch='index_condition_pushdown=off'),如下图,在步骤4中,没有使用where条件过滤索引:
MySQL 5.6 引入的索引下推优化(index condition pushdown), 可以在团结索引遍历过程中,对团结索引中包含的字段先做判断,直接过滤掉不满足条件的记载,减少回表次数。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |