2010-12-07 64 views
0

需要更新和插入Sql Server 2005中的1000萬條記錄。 我已經使用T-SQL創建了一個存儲過程。 我們是否需要在上面的過程之後進行提交,比如說時間上犯下了10000條記錄。如果是的話,我如何爲每10000條記錄寫一條提交語句。 任何想法,將不勝感激。正在處理的1000萬條記錄的更新/插入後的塊落實

+0

你有多少次/經常這樣做? – JeffO 2010-12-07 15:41:29

回答

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的大小),你的表有多寬正在插入,等?