3

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

查询 #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
4

3 回答 3

2

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

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

我不能真正保证另一种方法,因为我真的相信它变得太难以理解并且永远不应该使用。同样,这是我的观点,推理归结为观点/风格。

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

于 2012-04-13T20:11:46.083 回答
0

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

于 2012-04-13T20:19:10.470 回答
0

尝试预览执行计划。它很可能会完全一样。

于 2012-04-13T20:09:13.487 回答