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