我有几千条记录,我需要批量更新它们,每批350条记录。
我想知道下面的两个update语句是否有什么不同,其中一个是否会工作得更快,使用更少的数据库资源等。
语句1:
UPDATE TOP (350) database1
SET value1 = '', value2 ='', value3 = ''
WHERE value1 = '123'语句2:
UPDATE database1
SET value1 = '', value2 ='', value3 = ''
WHERE ID in
(SELECT TOP 350 ID FROM database1
WHERE value1 = '123')发布于 2017-02-01 18:49:38
第一条语句会更快。但前150条记录是随机选择的。在这两个查询中更新的记录可能不相同。由于您将更新分成批处理,因此您的方法可能不会更新所有记录。
我将使用比你的方法更一致的方法来做这件事。
;WITH cte
AS (SELECT TOP (350) value1,
value2,
value3
FROM database1
WHERE value1 = '123'
ORDER BY ID -- or any other column to order the result
)
UPDATE cte
SET value1 = '',
value2 = '',
value3 = '' 此外,在更新数千条记录时,您不必担心事务日志大小,这里不需要批处理
发布于 2017-02-01 19:36:22
从database1中过滤数据,然后按id连接。下面的方法更适合于选择和更新数据。
UPDATE database1
SET value1 = '', value2 ='', value3 = ''
FROM (
SELECT top 350 ID
FROM database1
WHERE value1 = '123'
) as db1
WHERE db1.ID = database1.IDhttps://stackoverflow.com/questions/41977698
复制相似问题