在TSQL中,SUM(A + B)与SUM(A)+ SUM(B)之间是否存在性能差异?

时间:2012-11-15 00:59:09

标签: tsql sql-server-2008-r2

我必须做两个字段的总和然后也总结。在首先添加字段或在列总和之后,从性能角度看是否有任何差异? 方法1 = SELECT SUM(columnA + columnB) 方法2 = SELECT SUM(columnA)+ SUM(columnB) (环境= SQL Server 2008 R2)

1 个答案:

答案 0 :(得分: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)可以被认为更快。