私のストアドプロシージャでは、#temptable
を使用して1つのテーブルからデータを取り出し、その結果を#temptable
に更新しています。私のプロダクション環境では、このストアドプロシージャは時間を浪費している多くの時間を消費していますが、環境が低いほどこのクエリは完全に機能します。一時テーブルのためタイムアウト
CREATE TABLE #TempTable
(
ID int IDENTITY PRIMARY KEY,
TOTALPOLICY nvarchar(14),
SYMBOL nvarchar (3),
POLNUM nvarchar (7),
MODULE nvarchar (2),
LOC char (2),
MCO char (2),
LOB char (3),
INSUREDNAME nvarchar (100),
TotalPremium decimal (10,2),
ServiceCharges decimal (10,2),
TotalPaid decimal (10,2),
TotalRefunded decimal (10,2),
CurrentBalance decimal (10,2),
TotalBilled decimal (10,2),
PCO char (2)
)
INSERT INTO #TempTable (TOTALPOLICY,SYMBOL, POLNUM, MODULE, LOC, MCO, LOB, INSUREDNAME,TotalPremium, ServiceCharges, TotalPaid, TotalRefunded, CurrentBalance, TotalBilled, PCO) --PCR 109 SMT added PCO
EXEC(@sql)
--PCR 109 Start SMT
Update #TempTable
Set TotalPaid = IsNull((Select sum(PaymentAmt)
From SHCashActivity with (nolock)
Where #TempTable.POLNUM = PolicyNbr
and #TempTable.Module = PolicyModuleNbr
and #TempTable.Symbol = PolicySymbolCd
and CashActivityTypeCd in ('P', 'C', 'N')
and CashAppliedStatusCd in ('1','2')), 0)
解決策を教えてください。
タイムアウトを増やす – SQLMason
一時テーブルを使用しないようにクエリを再設計してください。分離レベルで許可されている限り、同じテーブルから合計を得ることができます。しかし、あなたはいくつかのインデックスを使うことができるようです。 – SQLMason
私はあなたの**保存された**プロシージャに基づいて、これは(Microsoft)** SQL Server ** - 正しいと仮定していますか?もしそうなら:**どのバージョンのSQL Server? –