我想知道以下查询(使用两种不同的连接语法)之间的区别是什么。我在一些代码中看到了这个,我被继承了,如果结果总是一样的话,我很好奇。如果没有,为什么你会使用一个而不是另一个。
查询#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
答案 0 :(得分:2)
如前所述,您可以查看execution plans以验证这些查询确实相同。我几乎可以肯定他们是,但是
更多关于你为什么选择其中一个的问题。我会说这取决于风格偏好。大多数情况下,您会看到查询#2,因为它对未来的读者有更清晰的定义。如果您创建了一个真正复杂的查询,那么您获得的收益将大大增加。
我无法真正保证其他方法,因为我真的相信它变得太难以理解,永远不会被使用。再次,这是我的意见,推理归结为意见/风格。
然而,标准方式是query2,所以我会坚持下去:))但是再次,只是我
答案 1 :(得分:0)
尝试预览execution plan。它很可能完全一样。
答案 2 :(得分:0)
您的查询的执行计划完全相同。