tsql - TSQL——on 子句的顺序是否重要
问题描述
对于简化查询:
Select t1.c1, t1.c2, t2.d1
FROM table1 t1
LEFT JOIN table2 t2
ON
(t1.c1 = t2.d2)
从对称属性的数学看来,这与将ON反转为:
Select t1.c1, t1.c2, t2.d1
FROM table1 t1
LEFT JOIN table2 t2
ON
(t2.d2 = t1.c1)
这在 TSQL 中是否总是正确的,或者是否存在一些异常,如果查询被巧妙地更改,则可以获得更多行,如上所述?
我了解到非常细微的连接更改(在比这个简单示例复杂得多的查询中)会极大地影响行数。
此外,除了返回的行(我认为这两个查询始终应该完全相同)之外,我认为“ON”子句的一种排序可以使查询具有更好的性能速度。有人可以验证吗?
解决方案
正如您所观察到的,任何类型的 JOIN 中的 ON 条件都可以是可交换的。你可以做ON a = b
或ON b = a
让它们的意思完全相同。它们只是布尔表达式。
推荐阅读
- c# - 如何在 ListView 中保存用户输入?
- r - 将 R 闪亮的 checkboxGroupInput 与其他输入选择相结合
- ios - 这是 Swift 编译器中的错误吗?
- environment-variables - VSTS 机密作为环境变量
- html - VueJS 返回顶部按钮
- python - 在连接四蟒蛇游戏中的玩家之间交替
- leaflet - Leaflet Get Bounds w/ only top padding
- javascript - Loadash Debounce Vuejs 与 Buefy 自动完成
- delphi - Delphi/Indy10 如何在不下载内容的情况下检查 https URL 是否有效
- angular - 角度 4 decodeURI 没有转义'