首先查询:
Select * from table1 inner join table2 on table1.Id = table2.Id
第二次查询:
Select * from table1, table2 where table1.Id = table2.Id
这些关于应该使用的性能的查询之间有什么区别?
答案 0 :(得分:13)
您发布的两个陈述在逻辑上是相同的。真的没有 实际的理由是偏爱一个而不是另一个,这在很大程度上是一个问题 个人风格和可读性。有些人更喜欢INNER JOIN语法和 有些人更喜欢使用WHERE。
在ISO标准中,内连接可以 在FROM或中指定 WHERE子句。这是唯一的类型 在WHERE中加入ISO支持 条款。在内部指定的内部联接 WHERE子句称为旧式 内连接。
指定中的连接条件 FROM子句有助于将它们分开 可能的任何其他搜索条件 在WHERE子句中指定,并且是 建议的指定方法 联接。
Personaly,我更喜欢使用INNER JOIN
。我发现它更加清晰,因为我可以将连接条件与过滤条件分开,并为每个连接表使用单独的连接块。
答案 1 :(得分:1)
为了放大@Akram的答案 - 很多人更喜欢inner join
语法,因为它允许您更容易区分连接条件(FROM子句中的各个表如何相互关联)条件(应该用于减少整体结果集的那些条件。在这种情况下它们之间没有区别,但是对于更大的查询,如果有更多的表,它可能会提高使用inner join
形式的可读性。
此外,一旦你开始考虑外连接,你很需要使用中缀连接语法(left outer join
,right outer join
),所以很多人在使用相同的样式时找到一种对称形式inner join
。在WHERE
子句中使用*=
子句执行外连接有一个较旧的已弃用语法,但是对此类连接的支持正在消失。