最佳sql 2005性能:子查询与联接?

时间:2011-03-09 16:35:26

标签: sql-server-2005

在SQL服务器效率,使用子查询或加入?

方面有什么好转

我知道不相关的比相关的子查询更好。但是加入呢?

使用连接OUTER JOIN and check for NULLS,SQL变得更易读和易懂 但是对于DB的性能来说是更糟还是更好?

2 个答案:

答案 0 :(得分:3)

通过使用JOIN,您会发现SQL Server中的查询优化引擎可以制定更有效的查询执行计划。通常,最好总是使用JOIN,但如果存在性能问题,请尝试重新编写查询并记录性能差异。总有很奇怪的例外。

以我昨天正在处理的查询为例 - 通过向查询添加ORDER BY,它比没有ORDER BY的情况下运行更快。有没有搞错?怎么可能?它似乎违背了SQL的概念,因为每个操作都有时间成本。但是,使用和不使用ORDER BY的SQL Server 2000创建的查询执行计划完全不同。去搞清楚!它指出了检查执行计划和监控查询性能的重要性。

答案 1 :(得分:1)

很难回答一个像这样抽象的问题,但在明显的情况下,我可以想到我需要在两个子查询之间做出选择。

这些案例包括NOT EXISTS vs OUTER JOIN and NULLIN / EXISTS vs JOINDISTINCT。无论如何,子查询确实在计划中显示为JOINS

(编辑:刚刚注意到我的第二个例子 在你的问题中提及)