我必须做两个字段的总和然后也总结。在首先添加字段或在列总和之后,从性能角度看是否有任何差异? 方法1 = SELECT SUM(columnA + columnB) 方法2 = SELECT SUM(columnA)+ SUM(columnB) (环境= SQL Server 2008 R2)
答案 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)
可以被认为更快。