我有以下INSERT
查询。它尝试插入超过 50,000 行,但由于日志记录而失败。是否有一种很好的方法可以将这样的查询拆分为大约 1000 个左右的COMMIT
语句批次,使其不仅仅是一个大语句?
INSERT INTO xxx (....) SELECT .... FROM xx
Run Code Online (Sandbox Code Playgroud)
DECLARE @rc INT = 1;
WHILE @rc > 0
BEGIN
BEGIN TRANSACTION;
INSERT dbo.target(cols)
SELECT TOP (5000) cols
FROM dbo.source AS s
WHERE NOT EXISTS
(
SELECT 1 FROM dbo.target AS t
WHERE t.key = s.key
)
ORDER BY clustering_key;
SET @rc = @@ROWCOUNT;
COMMIT TRANSACTION;
END
Run Code Online (Sandbox Code Playgroud)
另见:
归档时间: |
|
查看次数: |
14626 次 |
最近记录: |