1
在我的存儲過程中,我使用#temptable
從一個表中獲取數據並更新該結果的#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 2012-04-26 19:06:57
我認爲你應該看看重新設計你的查詢不使用臨時表。只要您的隔離級別允許,您可以從同一張表中查詢相同的表格。但看起來你可以使用一些索引。 – SQLMason 2012-04-26 19:10:14
我假設 - 基於你的**存儲**程序,這是(Microsoft)** SQL Server ** - 正確的?如果是這樣的話:**哪個版本的SQL Server? – 2012-04-26 19:26:14