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