【问题标题】:Is it possible to do batch operations with TSQL "merge" statement?是否可以使用 TSQL“合并”语句进行批量操作?
【发布时间】:2015-01-03 01:02:06
【问题描述】:

在处理大表时,我们可以通过一个简单的UPDATE 语句批量执行。

WHILE 1 = 1
BEGIN
    UPDATE TOP (5000)
            dbo.LargeOrders
    SET     CustomerID = N'ABCDE'
    WHERE   CustomerID = N'OLDWO';

    IF @@rowcount < 5000
        BREAK;
END

使用MERGE 语句时,是否可以做类似的事情?据我所知,这是不可能的,因为您需要根据条件进行不同的操作。例如,匹配时为UPDATE,不匹配时为INSERT。我只是想确认一下,如果是真的,我可能需要切换到老式的UPDATEINSERT

【问题讨论】:

    标签: sql sql-server tsql merge batch-processing


    【解决方案1】:

    为什么不使用临时表作为 MERGE 的源,然后通过源表处理批处理。我在我的一个项目中执行此操作,我会将 50,000 行批处理到一个临时表,然后使用该临时表作为 MERGE 的源。我循环执行此操作,直到处理完所有行。

    临时表可以是物理表或内存表。

    【讨论】:

    • 这是解决问题的方法。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2019-10-08
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2023-01-28
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多