【问题标题】:Which is better, implicit or explicit join? [duplicate]哪个更好,隐式连接还是显式连接? [复制]
【发布时间】:2011-10-17 00:17:40
【问题描述】:

可能重复:
SQL JOIN: is there a difference between USING, ON or WHERE?

哪个更好:

SELECT `sheet_data`.* 
FROM  `clip`, `sheet_data` 
WHERE `clip`.`mrecord`='8' AND `clip`.`data`=`sheet_data`.`id`

SELECT `sheet_data`.* 
FROM  `clip` INNER JOIN `sheet_data` 
  ON  `clip`.`data`=`sheet_data`.`id`
WHERE `clip`.`mrecord`='8'

为什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    在过去,第一个更快,但现在不是这样了。我个人认为 INNER JOIN 更好,因为它更具可读性。它更好地显示了表之间的关系。您在连接中获得了这些关系,并在 WHERE 子句中进行过滤。这种分离使查询更具可读性。但这是个人喜好问题。

    【讨论】:

    • 哇。对这个答案投反对票?然后,告诉我出了什么问题。
    • 这是一个循环投票;)
    • 可能是因为您对参考资料不够了解,没有理由对您的绩效发表评论,而且之前也被问过很多次。
    • 您可能在参考文献上是对的,但如果问题被证明是以前提出的,答案怎么会出错? :)
    【解决方案2】:

    没有。 2 的可读性更好,您可以通过查看要加入哪些列的 ON 子句来查看,而不必扫描整个 where 子句。但从性能的角度来看,这两个查询将产生相同的执行计划,具有相同的性能。

    【讨论】:

      【解决方案3】:

      一般来说,执行显式连接(第二个)总是更好,因为它更便携。并非所有 SQL 服务器都实现了隐式连接,而且更容易一眼看出发生了什么。

      【讨论】:

        猜你喜欢
        • 2019-04-03
        • 1970-01-01
        • 2011-07-08
        • 2012-03-13
        • 1970-01-01
        • 2010-09-07
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多