为什么加入比子查询更好?

时间:2013-06-14 14:16:29

标签: sql sql-server sql-server-2008 sqlite tsql

我已经阅读了很多文章,表明加入比SubQuery更好。但是他们没有解释原因!

你能解释一下为什么加入比SubQuery更好吗?

3 个答案:

答案 0 :(得分:2)

情况并非总是如此。

在SQL Server中,使用EXISTS/NOT EXISTS通常可以执行使用JOIN关键字编写的等效查询。 SQL Server具有高效的半连接和反半连接运算符。

相关子查询的问题是当它们强制嵌套循环算法时,子查询会针对每个外行单独重复评估。

答案 1 :(得分:0)

在查询中执行一次连接以获取超级数据集,然后应用过滤器(如果有)。

每个匹配的记录都会多次执行子查询。

答案 2 :(得分:0)

人们忘记的是,优化器比大多数程序员更了解它。 我建议阅读这篇文章。 SQL server engine knows the best

子查询/ join / exists / in可能由优化器以相同的方式执行。