【发布时间】:2012-11-09 04:42:49
【问题描述】:
大多数 RDBMS 都支持这两种语法:
SELECT ...
FROM table1 t1 JOIN table2 t2
ON t1.jfield = t2.jfield
还有
SELECT ...
FROM table1 t1, table2 t2
WHERE t1.jfield = t2.jfield
就个人而言,我更喜欢后一个版本,因为它不那么冗长,但它在性能和查询执行方面有什么不同吗?我在这个论坛上看到有人评论说第二种风格已经过时并且表现不佳。
【问题讨论】:
-
没有问题。你要什么,对两者进行详细分析?基准?要了解 SQL 如何优化您的查询以查看它们是否不同?如果第二种风格实际上已经过时了?
-
我说“我想知道它在性能上是否有任何差异”
-
为了您的方便,我把它改成了一个带问号的句子……如果您无法隐含地推断出问题
-
我更喜欢第一个 (ANSI 92),因为与第二个 (ANSI 89) 不同,它不可能错过连接条件并导致无意的交叉连接。
-
你在什么样的服务器上工作?如果是 SQL Server 和 SSMS,则在新的查询窗口中键入这两个查询并按 CTRL+L。您可能会看到它们都有相同的查询计划。 SQL 很聪明。但是,在复杂的查询中,使用第二种语法并没有给自己带来任何好处。 SQL 在第一个版本中会更高效。
标签: sql