実行中の合計を計算して表示するためのより高速な方法が必要です。
これは、サブクエリを使用して実行中の合計を生成するビューをクエリする MVC テレリック グリッドです。クエリが完了するまでに 73 秒かかりますが、これは受け入れられません。(ユーザーが「Refresh Forecast Sheet」を押すたびに、グリッドを再設定するのに 73 秒かかります。)
クエリは次のようになります。
SELECT outside.EffectiveDate
[omitted for clarity]
,(
SELECT SUM(b.Amount)
FROM vCI_UNIONALL inside
WHERE inside.EffectiveDate <= outside.EffectiveDate
) AS RunningBalance
[omitted for clarity]
FROM vCI_UNIONALL outside
特定のアイテムの「EffectiveDate」は常に変更される可能性があります...新しいアイテムが追加される可能性があります。確かに、実行中の合計をその場で計算できるものが必要です([更新]ボタンが押されたとき)。ストアド プロシージャまたは別のビュー...? お知らせ下さい。
解決策:(多くの1つ、これはサブクエリよりも桁違いに高速です)
colを除くRunningTotal
ビュー内のすべての列を含む新しいテーブルを作成します。最初にテーブルを切り捨て、次にすべての列INSERT INTO
を使用してテーブルを切り捨てるストアド プロシージャを作成します。SELECT
ローカル変数の更新メソッドを使用します。
DECLARE @Amount DECIMAL(18,4)
SET @Amount = 0
UPDATE TABLE_YOU_JUST_CREATED SET RunningTotal = @Amount, @Amount = @Amount + ISNULL(Amount,0)
ストアド プロシージャを 1 日 1 回実行するタスク エージェントを作成します。TABLE_YOU_JUST_CREATED
すべてのレポートに を使用します。