【问题标题】:MySQL: Penalty for LEFT JOIN with no joiners...MySQL:没有加入者的 LEFT JOIN 的惩罚......
【发布时间】:2013-02-16 23:51:16
【问题描述】:

我很想知道调用 LEFT JOIN 而没有加入任何内容的查询惩罚会是什么。

我有两个表:main.ID.type.infoadditional.ID.more_info

我正在运行这个查询:

SELECT main.*, additional.* FROM main LEFT JOIN additional ON main.ID = additional.ID

我很清楚 70% 的时间,我将查询一个 没有其他信息的 main.type -- additional 中没有条目,但由于为了限制,我总是必须包含 LEFT JOIN 语句。

这会导致多少查询惩罚(时间)——如果有的话?

例如是:

SELECT * FROM main WHERE type = 'no additional'

将明显快于:

SELECT main.*, additional.* FROM main LEFT JOIN additional ON main.ID = additional.ID WHERE main.type = 'no additional'?

【问题讨论】:

    标签: mysql performance join


    【解决方案1】:

    您为什么不对其进行基准测试?没有获得比赛没有任何处罚。 MySQL 必须扫描连接字段的索引以检查是否有匹配项。

    如果有的话,获取连接结果实际上是一种惩罚,因为现在 MySQL 必须挖掘表文件才能返回结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 2016-06-14
      • 2018-12-06
      相关资源
      最近更新 更多