2

我必须对 2 个字段求和,然后再求和。从性能的角度来看,先添加字段还是在对列求和后添加字段有什么区别?方法 1 = SELECT SUM(columnA + columnB) 方法 2 = SELECT SUM(columnA) + SUM(columnB)(环境 = SQL Server 2008 R2)

4

1 回答 1

3

我已经检查过了,我看到的sum(x) + sum(y)是更快。为什么?当您使用 sum 函数时,您正在使用聚合函数。聚合时,将跳过空值。当您在聚合函数中组合两个字段时,处理器必须检查其中一个字段是否为 NULL,因为集合可以同时包含值和 NULL。将 NULL(或 UNKNOWN 或 NOTHING,如果您愿意)添加到某些东西,仍然什么都不是,所以 NULL。因此,对于每条记录,都必须进行检查。

当您查看您的执行计划并检查计算机标量运算符时,您会确切地看到这种行为。对于该sum(x) + sum(y)方法,您会看到估计的 cpu 成本为 0,0000001,而另一种方法最多占用 0,0000041。那是更多的东西!此外,当您仔细观察时,您会发现sum(x + y)将制作类似 [Expr1004] = Scalar Operator(CASE WHEN [Expr1006]=(0) THEN NULL ELSE [Expr1007] END)

所以,最终,sum(x) + sum(y)可以考虑更快。

于 2012-11-15T09:14:05.757 回答