【发布时间】:2010-09-15 10:17:39
【问题描述】:
我有一个导致性能问题的 T-SQL 查询。它很笨重,但似乎导致问题的部分是一个简单的 LEFT JOIN。
这可以通过删除左连接并在选择中使用子查询来解决,但是这对我来说似乎并不令人满意,因为我不明白为什么一个快速工作而不是另一个工作。
涉及的数据不多,所有连接列上都有键/索引。我唯一想知道的另一件事是关于数据库的统计信息以及它们是否会影响性能。
例如(注意,这只是一个更复杂的查询的简化
慢
SELECT A.1,A.2,B.3 FROM A LEFT JOIN B ON A.ID = B.ID ...
快速
SELECT A.1, A.2, (SELECT B.3 FROM B WHERE B.ID = A.ID) FROM A
【问题讨论】:
-
执行计划的主要区别是什么?
-
你不是真的使用序数来挑选列吗?
-
就像 hlgem 说的,第一个查询的其余部分是什么?
-
不,我没有使用序数,它是对更复杂查询的极大简化
标签: sql-server sql-server-2005 tsql query-performance