0
我有一個表: VIEWING_17to31_aug_server其中有393085432行。while循環或動態執行
我試圖通過連接條件更新字段(連接條件正確)。但是查詢無法執行,因爲它超出了查詢的臨時空間。
然後我試圖使用while循環,但沒有中斷,但現在已經運行了很多年。
CREATE VARIABLE @var_period_start datetime;
CREATE VARIABLE @var_period_end datetime;
CREATE VARIABLE @scanning_day datetime;
SET @var_period_start = '2013-08-17';
SET @var_period_end = '2013-08-31';
SET @scanning_day = @var_period_start;
while @scanning_day <= dateadd(dd,0,@var_period_end)
begin
UPDATE VIEWING_17to31_aug_server
SET A.calculated_scaling_weight = B.calculated_scaling_weight
FROM VIEWING_17to31_aug_server AS A
LEFT JOIN sk_prod.viq_viewing_data_scaling AS B
ON A.ACCOUNT_NUMBER = B.ACCOUNT_NUMBER
AND A.VIEWING_DAY = B.ADJUSTED_EVENT_START_DATE_VESPA
AND A.VIEWING_DAY = @SCANNING_DAY
End
有什麼其他的方法可以讓它更快完成嗎?動態執行會有幫助嗎?
不知道是否可以與您的應用程序適合,但如果你可以考慮每次更新原子(例如,如果while循環失敗,你希望保留更新已經完成),那麼你可以在每個循環週期後嘗試一次提交。 – asantaballa
謝謝你這個@asantaballa – SouravD