Using join buffer (Block Nested Loop) 在 Extra 列中使用 EXPLAIN mysql 命令意味着什么?
What does Using join buffer (Block Nested Loop) mean with EXPLAIN mysql command in the Extra column?
我正在尝试优化我的查询。
并获取使用连接缓冲区(块嵌套循环)
对于 table 和
之一
EXPLAIN SELECT
命令。
我不知道这是什么意思。
我尝试用谷歌搜索,但没有找到解释。
Using join buffer (block nested loop)
表示连接无法使用索引,并且它正在以困难的方式进行连接。换句话说,它正在对连接的 table.
进行 table-扫描
优化器假设连接的 table 中可能有更多行,因此它必须将行分批加载到内存缓冲区中,然后与缓冲区中的这些行进行比较,以过滤那些匹配连接条件。然后清空连接缓冲区,获取下一个行块,然后重试。
如果您在 EXPLAIN 报告中看到 Using join buffer (block nested loop)
,您应该弄清楚是否可以向联接的 table 添加索引以允许它更有效地查找匹配行。这与为查询中的第一个 table 找出最佳索引的过程类似。
我 运行 在 MySQL 5.6 中也遇到了同样的问题。
经过大量试验和错误后,我 运行 OPTIMIZE TABLE 对 table 的查询,这为我解决了问题.
我正在尝试优化我的查询。
并获取使用连接缓冲区(块嵌套循环) 对于 table 和
之一EXPLAIN SELECT
命令。
我不知道这是什么意思。 我尝试用谷歌搜索,但没有找到解释。
Using join buffer (block nested loop)
表示连接无法使用索引,并且它正在以困难的方式进行连接。换句话说,它正在对连接的 table.
优化器假设连接的 table 中可能有更多行,因此它必须将行分批加载到内存缓冲区中,然后与缓冲区中的这些行进行比较,以过滤那些匹配连接条件。然后清空连接缓冲区,获取下一个行块,然后重试。
如果您在 EXPLAIN 报告中看到 Using join buffer (block nested loop)
,您应该弄清楚是否可以向联接的 table 添加索引以允许它更有效地查找匹配行。这与为查询中的第一个 table 找出最佳索引的过程类似。
我 运行 在 MySQL 5.6 中也遇到了同样的问题。
经过大量试验和错误后,我 运行 OPTIMIZE TABLE 对 table 的查询,这为我解决了问题.