使用循环一次更新100万条数据

Update 1 million of data at a time using a loop

我需要使用循环一次更新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

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 作为 table 别名;这是一个保留字。 (我有点惊讶编译器让你,事实上!)
  • 由于 ROWCOUNT 更新即将结束,如果您仍想完成您的要求,则需要在存储过程中使用循环。