何时使用join或简单2表条件?

时间:2011-04-11 23:07:08

标签: mysql sql

  

可能重复:
  SQL left join vs multiple tables on FROM line?

我认为这更清楚:

"SELECT * FROM t1,t2 WHERE t2.foreignID = t1.id "

而不是带有JOIN的查询。

是否有关于何时使用这些或其他的规格?

由于

2 个答案:

答案 0 :(得分:2)

就个人而言,我更喜欢

的明确性
SELECT t1.*, t2.*
FROM t1 
JOIN t2 ON t1.id = t2.foreignID

我想确切了解我的JOIN条件是什么,并且我使用WHERE来进一步过滤结果(当前年份,仅限某个用户等)。在这样的简单查询中应该没关系,但肯定会有助于更长,更复杂的查询。

对于我来说,对于较短的查询使用一种样式而对于较长的查询则使用不同的样式是没有意义的。通常,简单的问题很快就变成了复杂的查询。

答案 1 :(得分:0)

这是一个笛卡尔连接,实际上与内连接非常非常不同。超过99.99%的时间,您将得到相同的结果。但是边缘情况会慢得多,或者可能会产生额外的行。但是,当您添加左连接时,您更有可能遇到解析问题。 MySQL文档给出了一些解释,但并不多。不同之处在于查询优化器如何选择如何扫描表。

当您开始在WHERE子句中添加其他条件时,此格式也会变得混乱。