[英]Block commit after Update/Insert for 10 million records being processed
需求需要在Sql Server 2005中進行1000萬條記錄的更新和插入。我已經使用T-SQL創建了存儲過程。 我們需要在上述過程之后進行一次提交嗎,比如說一次提交了10000條記錄。 如果是這樣,我該如何寫每10000條記錄的提交語句。 任何想法,將不勝感激。
通常,批量刪除/更新/插入的一種方法是使用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的大小),表的寬度是多少正在插入等?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.