さまざまな計算で使用されるスカラー関数を含むselectステートメントがある場合、そのスカラー関数は複数回と呼ばれる?そうであれば、これを最適化する方法はありますか?私の実際のクエリでは1回につきX 6回、何千回も呼び出されるため、選択ごとに1回だけfuncitonを呼び出します。例えばselectステートメント内でスカラー関数を複数回呼び出すことは、関数を複数回実行しますか?その場合、回避する方法
:
SELECT
[dbo].[fn_Days](@Account) + u.[DayRate],
[dbo].[fn_Days](@Account)/u.[WorkDays]
FROM [dbo].[tblUnit] u
すべてfn_daysんが働いた日のint型を返すことです。
私はそれがすべての行に対して実行されることを認識していますが、同じ行内で2回実行されているので、何とかその同じ値を使用できますか? – mameesh
あなたのコメントを投稿した通りに気づいた。それは、理論的には、値を格納することができますが、私はそれが疑う。これを理解するには、意図的に実行に時間がかかる関数を作成し、それをクエリとして1回、クエリで2回呼び出し、実行時間を比較する方法があります。 – Corbin
すでに関数の結果を列として結合している場合、クエリプランがどのようなものかを確認してください。 –