21

我知道在简单查询中 Distinct 和 Group By 的性能和执行计划几乎相同。

例如

SELECT Name FROM NamesTable GROUP BY Name
SELECT DISTINCT Name FROM NamesTable

但是我读过在某些情况下它们的性能会有所不同,例如在子查询中等等?

那么,您能否举一些例子或解释一些他们的表现不同的场景?

非常感谢

4

2 回答 2

16

如果您在字段列表中包含计算值,您将看到执行计划中的差异。

select Value,
       getdate()
from YourTable
group by UnitID

select distinct
       Value,
       getdate()
from YourTable

查询在group by计算标量值之前进行聚合。该distinct查询在聚合之前计算标量值。

于 2012-05-18T11:04:32.637 回答
7

这里有 2 个示例,一个用于产生不同的结果,另一个用于产生不同的性能:

产生不同性能的例子

第二个例子:

产生不同结果的示例

于 2012-05-18T12:11:29.677 回答