我读过很多文章表明join比SubQuery更好。但是他们没有解释为什么!
你能解释一下为什么 join 比 SubQuery 更好吗?
我读过很多文章表明join比SubQuery更好。但是他们没有解释为什么!
你能解释一下为什么 join 比 SubQuery 更好吗?
这并非总是如此。
在 SQL Server 中,使用关键字EXISTS/NOT EXISTS
通常可以胜过使用JOIN
关键字编写的等效查询。SQL Server 具有高效的半联接和反半联接运算符。
相关子查询的问题在于,当它们强制使用嵌套循环算法时,子查询会针对每个外部行重复单独评估。
在查询中执行一次连接以获得数据的超集,然后应用过滤器(如果有)。
对每个匹配的记录执行多次子查询。
人们常常忘记的一件事是优化器比大多数程序员更了解它。我建议阅读这篇文章。SQL Server 引擎最了解
subquery/join/exists/in 可能由优化器以相同的方式执行。