【发布时间】:2020-05-20 09:08:56
【问题描述】:
我正在尝试优化我的查询。
并获得使用连接缓冲区(块嵌套循环) 对于其中一张桌子
EXPLAIN SELECT 命令。
我不知道这是什么意思。 我尝试谷歌搜索,但我没有找到解释。
【问题讨论】:
我正在尝试优化我的查询。
并获得使用连接缓冲区(块嵌套循环) 对于其中一张桌子
EXPLAIN SELECT 命令。
我不知道这是什么意思。 我尝试谷歌搜索,但我没有找到解释。
【问题讨论】:
Using join buffer (block nested loop) 表示连接无法使用索引,并且它正在以艰难的方式进行连接。换句话说,它正在对连接的表进行表扫描。
优化器假设连接表中可能有更多行,因此它必须将行分批加载到内存缓冲区中,然后与缓冲区中的这些行进行比较,以过滤那些与连接条件匹配的行。然后清空连接缓冲区,获取下一个行块,然后重试。
如果您在 EXPLAIN 报告中看到 Using join buffer (block nested loop),您应该确定是否可以向连接表添加索引,以使其更有效地查找匹配行。这与为查询中的第一个表找出最佳索引的过程类似。
【讨论】:
EXPLAIN 的结果,以及查询中每个表的SHOW CREATE TABLE 的结果。