MySQL MMR
MMR全程Multi-Range Read,5.6新特性
当表很大的时候,使用二级索引进行范围的读取行回表导致磁盘的随机访问。
原理:
先查询满足条件的索引元组,然后按照数据行ID进行排序,对排序后的元组回表检索数据行
使用场景:
- 可以基于InnoDB和MyISAM引擎进行优化
- 可以基于集群多范围索引扫描表
使用MRR的时候,Extra 显示Using MRR
select * from user where uid > 100
- 在没有MMR的情况下
先获取数据集,然后根据集合回表,返回满足的数据
- 使用MMR情况下
先获取数据集,然后对数据集排序(主键排序),最后回表查询完整行