本文前提
- 基于InnoDB存储引擎
- 当前读

where提取
提取为三部分:Index Key, Index Filter, Table Filter
Index key
Index First Key:
用于确定索引查询的起始范围。提取规则:从索引的第一个键值开始,检查其在where条件中是否存在,若存在并且条件是=、>=,则将对应的条件加入Index First Key之中,继续读取索引的下一个键值,使用同样的提取规则;若存在并且条件是>,则将对应的条件加入Index First Key中,同时终止Index First Key的提取;若不存在,同样终止Index First Key的提取。
总结为一句话:从前面往后找,如果条件是>=或者是=,则继续,如果不是则结束(>则加入结束)

本文深入分析了在InnoDB存储引擎中,WHERE条件如何影响索引查询的加锁。提取了Index First Key和Index Last Key来确定查询范围,Index Filter用于索引层面的过滤,而Table Filter则涉及回表操作。MySQL 5.6后的Index Condition Pushdown(ICP)技术将Index Filter下沉到索引层面,减少了回表操作,提升了SQL执行效率。ICP对于RR隔离级别下的锁范围有直接影响。
最低0.47元/天 解锁文章
330

被折叠的 条评论
为什么被折叠?



