更新/插入后阻止提交,处理1000万条记录

时间:2010-12-07 15:36:34

标签: sql sql-server sql-server-2005 tsql

要求在Sql Server 2005中需要更新和插入1000万条记录。 我使用T-SQL创建了一个存储过程。 我们是否需要在上面的过程之后进行提交,比如说当时提交的10000条记录。如果是这样,我如何为每10000条记录写一个提交语句。 任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:3)

通常,批量删除/更新/插入的方法是使用WHILE循环。我通常遵循的模式是:

WHILE 1=1
BEGIN
 INSERT INTO dbo.MyTable
 (field1, field2, field3...)
 SELECT TOP 100000 (field1, field2, field3...)
 FROM dbo.MySourceTableorQuery as S
 WHERE NOT EXISTS (
        SELECT * FROM dbo.SourceTableorQuery as S 
        WHERE s.PrimaryKey = MyTable.PrimaryKey)
 IF @@ROWCOUNT<100000 BREAK;
END

至于“你是否需要”,没有很多其他信息就无法回答。它是什么类型的查询,表结构是什么样的,当前运行需要多长时间,你如何获得磁盘空间(如果是单个事务,你真的会增加tempdb的大小),你的表有多宽正在插入等?