数据库:SQL Server 2005
问题:将值从一列复制到同一个表中的另一列,其中包含十亿多行。
test_table (int id, bigint bigid)
尝试的事情1:更新查询
update test_table set bigid = id
填满事务日志并由于事务日志空间不足而回滚。
尝试 2 - 以下几行的程序
set nocount on
set rowcount = 500000
while @rowcount > 0
begin
update test_table set bigid = id where bigid is null
set @rowcount = @@rowcount
set @rowupdated = @rowsupdated + @rowcount
end
print @rowsupdated
上述过程在进行时开始变慢。
尝试 3 - 创建用于更新的游标。
在 SQL Server 文档中通常不鼓励这种方法,并且这种方法一次更新一行,这太耗时了。
是否有一种方法可以加快将值从一列复制到另一列的速度。基本上,我正在寻找一些“神奇”的关键字或逻辑,它们将允许更新查询按顺序一次遍历十亿行。
任何提示,指针将不胜感激。