【问题标题】:Update 1 million of data at a time using a loop [closed]使用循环一次更新 100 万条数据[关闭]
【发布时间】:2021-12-11 05:23:18
【问题描述】:

我需要使用循环一次更新 100 万条数据。这就是我所拥有的。

SET Rowcount 1000000
While (1 = 1)
   Begin
   Begin Transaction

   Update as
   Set as.productInd = 0
   From Product as
   Where as.ProductInd IS NULL
If @@RowCount = 0
Begin

Commit Transaction
Break

End
Commit Transaction

End
Set Rowcount 0

【问题讨论】:

  • 您的问题是什么?
  • @Larnu 我想检查代码是否正确。
  • 您比我们处于更有利的检查位置,@A。另外,Stack Overflow 不是用于代码验证的网站。
  • @Larnu 会及时通知您。谢谢
  • 你不想要一个事务,否则你将失去不阻塞和不增长事务日志的好处。你应该只使用UPDATE TOP (1000000)

标签: sql sql-server loops sql-update


【解决方案1】:

SET ROWCOUNT 正在弃用UPDATE 声明(here's the KB article about it)。因此,如果您运行的是现代或更旧版本的引擎,您可以使用:

SET ROWCOUNT 1000000

   UPDATE Product
   SET productInd = 0
   WHERE productInd IS NULL

SET ROWCOUNT 0

几点说明:

  • 您只有一个语句,因此它已经隐式包装在事务中。
  • 不要使用as作为表别名;这是一个保留字。 (事实上​​,编译器让你有点惊讶!)
  • 由于 ROWCOUNT for updates 即将推出,如果您仍想完成您的要求,您需要在存储过程中使用循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多