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)はより速いということです。なんで?合計関数を使用する場合は、集計関数を使用しています。集計する場合、そのような場合はnull値がスキップされます。集計関数で2つのフィールドを組み合わせる場合、セットには値とNULLの両方を含めることができるため、プロセッサはフィールドの1つが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 に答える