Extra 列中的 EXPLAIN mysql 命令使用 join buffer (Block Nested Loop) 意味着什么?

2024-01-11

我正在尝试优化我的查询。

并得到使用连接缓冲区(块嵌套循环)对于其中一张表

EXPLAIN SELECT命令。

我不知道这是什么意思。 我尝试用谷歌搜索,但没有找到解释。


Using join buffer (block nested loop)意味着连接无法使用索引,并且它正在以困难的方式进行连接。换句话说,它正在对连接的表进行表扫描。

优化器假设连接表中可能有更多行,因此它必须将行批量加载到内存缓冲区中,然后与缓冲区中的这些行进行比较,以过滤那些与连接条件匹配的行。然后清空连接缓冲区,获取下一个行块,然后重试。

如果你看到Using join buffer (block nested loop)在 EXPLAIN 报告中,您应该弄清楚是否可以向连接表添加索引,以使其能够更有效地查找匹配行。这与计算查询中第一个表的最佳索引类似。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Extra 列中的 EXPLAIN mysql 命令使用 join buffer (Block Nested Loop) 意味着什么? 的相关文章

  • ECHO MYSQL 结果显示空白页 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我知道这一定很简单 但我做不到 我需
  • 如何在 MySQL 查询编辑器中对列重新排序?

    我想移动专栏OtherSupport below Amount2 是否有捷径可寻 ALTER TABLE myTable MODIFY OtherSupport VARCHAR 50 AFTER Amount2
  • 将日期格式(在数据库或输出中)更改为 dd/mm/yyyy - PHP MySQL

    MySQL 将日期存储在我的数据库中 默认情况下 为 YYYY MM DD 我的日期的字段类型是 DATE 我不需要任何时间存储 有没有一种简单的方法可以默认更改它到 DD MM YYYY 我在两个不同的表中调用不同的日期 并且在我的任何代
  • FIND_IN_SET 具有多个值[重复]

    这个问题在这里已经有答案了 我想从数据库字段搜索多个值 以下是我的查询 SELECT FROM tablename WHERE FIND IN SET 12 13 15 15 category id 我如何搜索它对我不起作用 FIND IN
  • PHP/PDO/MySQL:插入 MEDIUMBLOB 会存储错误数据

    我有一个简单的 PHP Web 应用程序 它通过文件上传接受图标图像并将它们存储在 MEDIUMBLOB 列中 在我的机器 Windows 和两台 Linux 服务器上 这工作得很好 在第三台 Linux 服务器上 插入的图像已损坏 在 S
  • 使用 PHP 将 mysql 值转储到 JSON 文件中

    我正在尝试使用 PHP 从 mysql 数据库生成 JSON 文件 到目前为止 我有
  • SQL选择符号||是什么意思意思是?

    什么是 在 SQL 中做什么 SELECT a b AS letter 表示字符串连接 不幸的是 字符串连接不能在所有 sql 方言之间完全移植 ANSI SQL 中缀运算符 mysql concat 可变参数函数 caution 表示 逻
  • Laravel 5.5 中的主从配置

    如何配置 Laravel 5 5 主从 MySQL 复制 我想分别在master和slave上进行写操作和读操作 可选 有没有办法在理想条件下进行连接池和打开连接的最大 最小数量 只需改变你的config database php文件包含读
  • 如何在 MySQL 中使用 INET_ATON 进行通配符搜索 IP 地址?

    我发现这个方法可以使用 INET ATON 将 IP 地址作为整数存储在 MySQL 数据库中 https stackoverflow com a 5133610 4491952 https stackoverflow com a 5133
  • MYSQL数据库删除行后需要进行后期优化

    我有一个当前为 10GB 的日志表 它有很多过去两年的数据 我真的觉得目前我不需要那么多 我是否错误地认为在表中保存多年的数据不好 表越小越好 我的桌子都有 MYISAM 引擎 我想删除 2014 年和 2015 年的所有数据 很快我就会删
  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • Mysql对三表多列的连接查询

    我有三个这样的表 专业化 sid s name 1 test 1 2 test 2 Person pid name sid 1 ABC 1 2 XYZ 2 Timing tid time from time to pid 1 08 00 0
  • 有没有办法从 MySQL 的列中提取与正则表达式匹配的文本?

    例如 如果特定列中的所有条目都具有 a z 0 9 形式 如何仅提取前导字母 以便 asdf123 和 as3456 分别返回 asdf 和 as 这对于 mysql 正则表达式功能来说是不可能的 除非安装一些似乎是为此设计的 udf 从技
  • 比较 PHP 中的 unix 时间戳 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在 PHP 中我有 diff abs
  • InnoDB 或 MyISAM - 为什么不两者都使用呢?

    我读过各种关于两者之间哪个更好的主题InnoDB and MyISAM 看来争论的都是使用还是其他 根据表的不同 是否不能同时使用两者 这样做会有什么缺点 据我所知 发动机可以在CREATE TABLE命令 因此 某些经常读取的表可以设置为
  • 如何在 MySql Workbench 中禁用 INVISIBLE 索引选项?

    我刚刚安装了MySqlWorkbench我发现了实施INVISIBLE index所描述的here https dev mysql com doc refman 8 0 en invisible indexes html 我想禁用此功能 因
  • 为通用字符选择表排序规则

    我正在开发一个需要存储通用字符的后端 我选择了utf8mb4用于此目的的表编码 我还必须选择表格排序规则 最直接的选择是选择utf8mb4 general ci表整理 除了一般的排序规则之外 还有大约20种其他排序规则可供选择 更具体的排序
  • MySQL 如何使用返回多行的 SELECT 子查询插入表?

    MySQL 如何使用返回多行的 SELECT 子查询插入表 INSERT INTO Results People names VALUES SELECT d id FROM Names f JOIN People d ON d id f i

随机推荐