2012-11-15 50 views

回答

3

我已经检查了这一点,而我看到的是, sum(x) + sum(y)更快。 为什么?当你使用sum函数时,你正在使用一个聚合函数。在进行聚合时,空值将被跳过。当你在一个集合函数中合并两个字段时,处理器必须检查其中一个字段是否为NULL,因为一个集合可以同时包含一个值和一个NULL值。添加NULL(或UNKNOWN或任何如果你喜欢的东西),仍然没有,所以NULL。所以对于每个记录都必须进行检查。

当您查看执行计划并检查计算机标量运算符时,您会看到完全相同的行为。 对于sum(x) + sum(y)方法,您会看到0,0000001的估计CPU成本,其中另一种方法最多需要0.0000041。这是更多的东西! 此外,当你仔细看看,你会看到sum(x + y)将作出类似 [Expr1004] = Scalar Operator(CASE WHEN [Expr1006]=(0) THEN NULL ELSE [Expr1007] END)

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

+0

感谢您的答案马克。如果两列都不是NULL呢? –

+0

我刚刚尝试过这一点,并得出了相同的结论。 sum(x)+ sum(y)更快。但是,要确保你想要的答案是好的。当你做一个和(x + y)它可以给你一个不同的答案,然后sum(x)+ sum(y)。但我想你已经想过了...... –

相关问题