以下菌屬: 我有從1/2分鐘至4小時的任何地方運行(夜間處理期間)一個存儲過程:長時間運行SP
update tableA
set tableA.Other_Flag_50 = isnull(Staging.other_flag_50, 0)
from tableA
inner join (
select acct_nbr,
appl_code,
Other_Flag_50
from tableB
) Staging on tableA.lnhist_acct_nbr = Staging.acct_nbr
and tableA.lnhist_appl_code = Staging.appl_code
我跑在探查阻斷報告在2晚一排,首先在10分鐘間隔,然後在5分鐘。存儲過程從不顯示爲被阻止(但會阻止其他查詢)。
有關優化這個的任何想法?用聯接幫助創建一個視圖? (來自tableB的acct_nbr,appl_code,Other_Flag_50)謝謝!
你檢查如果表上有任何索引?也許你需要添加一個索引來提高這個語句的性能。你是否也檢查過SSMS中更新語句的執行計劃(假設你使用的是SQL Server)?它會告訴你是否正在進行表格掃描等,並可能幫助識別是否需要索引。 –
你在使用什麼數據庫?我很驚訝這是在做你期望的事情,因爲TableA在update子句和from子句中有相同的別名。我不能發誓SQL從不支持這一點,但我通常不會在更新查詢中提及表名兩次。 –