1

ストアド プロシージャを 1 回実行し、sys.dm_exec_query_stats でクエリの統計情報を確認すると、正しい実行回数が 1 になっています。

しかし、UDF を 1 回実行すると、実行回数が 4 であることがわかります (sys.dm_exec_query_stats には、その udf の行が 3 つあります)。

ObjName ExecutionCount AvgWorkerTime


fnGetDomesticNumber 1 3066
fnGetDomesticNumber 2 411
fnGetDomesticNumber 1 657

誰でもこれを理解するのを手伝ってもらえますか。

ありがとうございました

4

1 に答える 1

0

SQL Server が UDF を再コンパイルしている可能性があります。これは、SQL Server プロファイラーを実行して SP:Recompile イベントをトラップすることで確認できる場合があります。

また、関数を呼び出す SQL クエリによっては、SQL Server がデータ行ごとに 1 回関数を呼び出す場合があります。それが 2 の ExecutionCount を説明するかもしれません。

于 2012-10-05T21:46:22.913 に答える