以块的形式更新表

时间:2013-10-18 12:58:40

标签: sql batch-processing

我正在尝试更新块和事务中的大表。

如果由于某种原因未更新column1,则此查询将无休止地运行。我在那里有另一个嵌套查询,它不一定返回一个值,所以一些column1在更新后保持为null。这使我的查询陷入无休止的循环。

如何指定“更新顶部”的位置?

提前致谢。


declare @counter int 
declare @total int
declare @batch int

set @total = (SELECT COUNT(*) FROM table with(nolock))
set @counter = 0 
set @batch = 1000

while (@counter < (@total/@batch) + 1)
begin
BEGIN TRANSACTION

set @counter = @counter + 1 
Update TOP ( @batch ) table

SET column1 = 'something'
where column1 is null 

Commit transaction
end

0 个答案:

没有答案