一.Multi-Range Read
- 优化点:尽量使用顺序读盘
- 回表:InnoDB在普通索引a上查到主键id后,根据一个主键id的值在主键索引上去查整行数据的过程。
- 随着a的值递增顺序查询的话,id的值就会变成随机,那么就出现随机访问,性能比较差,但是调整查询的顺序,还是能够加速(主键顺序查询)
二.MRR 优化的设计思路
- 根据索引a,定位满足条件的记录,将id值放入read_rnd_buffer中
- 将read_rnd_buffer中的id进行递增排序
- 排序后的id数组,依次到主键id索引中查记录,并作为结果返回
MRR提升性能核心:这条查询语句在索引a上做一个范围查询(多值查询)
然后再根据主键索引查询数据,才能体现出顺序性的优势
三.大表join
- 大表join操作对IO有影响,但是语句执行结束后,对IO影响也结束了
- 对Buffer Pool的影响是持续的,需要依靠后面的查询请求慢慢恢复内存命中率