Sql server 2005 最佳sql2005性能:子查询与联接?

Sql server 2005 最佳sql2005性能:子查询与联接?,sql-server-2005,Sql Server 2005,在SQL server效率方面,使用子查询或联接更好吗 我知道不相关查询比相关子查询更好。但是加入呢 使用联接外部联接并检查空值,SQL变得更加可读和可理解 但是对数据库的性能来说是更差还是更好呢?您会发现,通过使用联接,SQL Server中的查询优化引擎可以制定更高效的查询执行计划。通常,最好始终使用联接,但如果存在性能问题,请尝试重新处理查询和文档性能差异。总是有非常奇怪的例外 以我昨天处理的查询为例,通过向查询中添加ORDER by,它比没有ORDER by时运行得更快。搞什么鬼?这怎么

在SQL server效率方面,使用子查询或联接更好吗

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

使用联接
外部联接并检查空值,SQL变得更加可读和可理解

但是对数据库的性能来说是更差还是更好呢?

您会发现,通过使用联接,SQL Server中的查询优化引擎可以制定更高效的查询执行计划。通常,最好始终使用联接,但如果存在性能问题,请尝试重新处理查询和文档性能差异。总是有非常奇怪的例外


以我昨天处理的查询为例,通过向查询中添加ORDER by,它比没有ORDER by时运行得更快。搞什么鬼?这怎么可能?这似乎与SQL的概念背道而驰,因为每个操作都有时间开销。但是,SQL Server 2000创建的查询执行计划与使用ORDER by和不使用ORDER by完全不同。想想看吧它指出了检查执行计划和监视查询性能的重要性。

您会发现,通过使用联接,SQL Server中的查询优化引擎可以制定更高效的查询执行计划。通常,最好始终使用联接,但如果存在性能问题,请尝试重新处理查询和文档性能差异。总是有非常奇怪的例外


以我昨天处理的查询为例,通过向查询中添加ORDER by,它比没有ORDER by时运行得更快。搞什么鬼?这怎么可能?这似乎与SQL的概念背道而驰,因为每个操作都有时间开销。但是,SQL Server 2000创建的查询执行计划与使用ORDER by和不使用ORDER by完全不同。想想看吧它指出了检查执行计划和监视查询性能的重要性。

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

这些情况是
不存在
外部联接和空
中存在
联接
不同
。子查询确实在计划中显示为
连接


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

很难回答这样一个抽象的问题,但在明显的情况下,我可以想到我需要在两个然后是子查询之间进行选择的地方

这些情况是
不存在
外部联接和空
中存在
联接
不同
。子查询确实在计划中显示为
连接

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