有没有一种方法可以优化批处理更新查询?

时间:2020-10-15 08:18:52

标签: sql sql-server query-optimization

需要更新具有1亿条记录的表。 有没有优化此查询的方法?

DECLARE @rows INT = 1;

WHILE @rows > 0
BEGIN
    UPDATE TOP(2000) T1
    SET T1.SomeUuid = T2.SomeUuid
    FROM dbo.Table1 T1
    INNER JOIN Table2 T2 ON T1.SomeId = T2.SomeId
                         AND T1.AnotherId = T2.AnotherId
                         AND T1.SomeField = T2.SomeField
    WHERE T1.SomeUuid IS NULL

    SET @rows = @@ROWCOUNT
END

表必须使用三键进行联接。

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法,看看它是否适合您。 我们的想法是,我们在准备ID之前就做好准备,并在读取数据时避免使用join和其他谓词。 通过这样做,我们将update命令的范围缩小到尽可能简单,并提高了并发性。 您采取的任何方法都只记得不要一次更新数千行,以防止锁升级。

./Components/Dashboard