我运行以下语句,它将更新超过9300万行。
SET rowcount 10000
update t
set [OC]=r.[OC]
from [dbo].[Vente] t
inner join [dbo].[OC] r
on t.[Date Time] between r.[DATE DEBUT] and r.[DATE FIN]
while @@rowcount>0
BEGIN
update t
set [OC]=r.[OC]
from [dbo].[Vente] t
inner join [dbo].[OC] r
on t.[Date Time] between r.[DATE DEBUT] and r.[DATE FIN]
end
SET rowcount 0
如何优化它?
答案 0 :(得分:0)
在t。[日期时间]上有索引时,我会批量更新与一天相关的数据,例如:
public void create () {
paddleRect = new Rectangle();
paddleRect.x = 0;
paddleRect.y = 0;
...
您可能需要在日期时间字段上进行一些转换才能获得当天。根据您的数据,您还可以考虑批量更新固定数量的行。
答案 1 :(得分:0)
我觉得你的update语句会进入无限循环,因为你不会每次都排除更新的记录。
您需要为更新添加一个条件,即t。[OC]<> r。[OC]以避免不必要的写入。并且如果t.OC被假设为空以进行更新,并且在第一次更新之后不会发生变化,则添加t。[OC]为空
尝试使用合并声明