两个 TSQL 联接之间有什么区别?



我想知道以下查询(使用两种不同的连接语法)之间的区别是什么。 我在我继承的一些代码中看到了这一点,并且很好奇结果是否总是相同的。 如果没有,为什么你会使用一个而不是另一个。

查询 #1 示例:

SELECT * FROM TableA a
  INNER JOIN TableB b
    INNER JOIN TableC c
      ON b.TableBId = c.TableCId
     ON b.TableBId = a.TableAId

查询 #2 示例:

SELECT * FROM TableA a
  INNER JOIN TableB b
     ON b.TableBId = a.TableAId
  INNER JOIN TableC c
     ON b.TableBId = c.TableCId

如前所述,您可以查看执行计划以验证这些查询是否确实相同。不过,我几乎可以肯定他们是

更多关于你为什么会选择一个而不是另一个的问题。我想说这归结为风格偏好。大多数情况下,您将看到查询 #2,因为它对未来的读者有更清晰的定义。如果您创建了一个真正复杂的查询,那么您获得的好处就会大大增加。

我真的不能保证另一种方法,因为我真的相信它变得太不可读了,永远不应该使用。同样,这是我的意见,推理归结为意见/风格。

但是,标准方法是 query2,所以我会坚持使用:)......但同样,只有我

尝试预览执行计划。它很可能完全相同。

查询的执行计划完全相同。

最新更新