Nested-Loop Join(循环嵌套连接)
- Simple Nested-Loop Join(简单嵌套循环连接)
- Index Nested-Loop Join(索引嵌套循环连接)
- Block Nested-Loop Join(缓存块嵌套循环连接)
show variables like '%join_buffer%' ; 默认值:join_buffer_size=256k
调大 join buffer size ,建议最大 1G
使用Block Nested-Loop Join算法需要开启优化器管理配置的optimizer_switch的设置block_nested_loop为on,
默认是开启的。
show variables like '%optimizer_switch%' 查看block_nested_loop状态
MRR优化
MRR优化的目的就是减少磁盘随机IO的产生,其查询优化过程大致如下:
1、先把通过二级索引取出的值缓存在缓冲区中。
2、再把这部分缓冲区中的数据按照ID进行排序。
3、然后再依次根据ID去聚集索引中获取整个数据行。
可以看出,只需要通过一次排序,就使得随机IO,变为顺序IO,使得数据访问更加高效。
read_rnd_buffer_size控制了数据能放入缓冲区的大小,如果一次性不够放就会分多次完成。
网友评论