需要更新具有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
表必须使用三键进行联接。
答案 0 :(得分:0)
您可以尝试这种方法,看看它是否适合您。 我们的想法是,我们在准备ID之前就做好准备,并在读取数据时避免使用join和其他谓词。 通过这样做,我们将update命令的范围缩小到尽可能简单,并提高了并发性。 您采取的任何方法都只记得不要一次更新数千行,以防止锁升级。
./Components/Dashboard