两个SQL连接之间有什么区别?

时间:2012-04-13 19:59:52

标签: sql sql-server 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

3 个答案:

答案 0 :(得分:2)

如前所述,您可以查看execution plans以验证这些查询确实相同。我几乎可以肯定他们是,但是

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

我无法真正保证其他方法,因为我真的相信它变得太难以理解,永远不会被使用。再次,这是我的意见,推理归结为意见/风格。

然而,标准方式是query2,所以我会坚持下去:))但是再次,只是我

答案 1 :(得分:0)

尝试预览execution plan。它很可能完全一样。

答案 2 :(得分:0)

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