要求在Sql Server 2005中需要更新和插入1000万条记录。 我使用T-SQL创建了一个存储过程。 我们是否需要在上面的过程之后进行提交,比如说当时提交的10000条记录。如果是这样,我如何为每10000条记录写一个提交语句。 任何想法都将不胜感激。
答案 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的大小),你的表有多宽正在插入等?