首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL UPDATE TOP ()或UPDATE with SELECT TOP

SQL UPDATE TOP ()或UPDATE with SELECT TOP
EN

Stack Overflow用户
提问于 2017-02-01 18:43:05
回答 2查看 22.9K关注 0票数 6

我有几千条记录,我需要批量更新它们,每批350条记录。

我想知道下面的两个update语句是否有什么不同,其中一个是否会工作得更快,使用更少的数据库资源等。

语句1:

代码语言:javascript
复制
UPDATE TOP (350) database1
SET value1 = '', value2 ='', value3 = ''
WHERE value1 = '123'

语句2:

代码语言:javascript
复制
    UPDATE database1
    SET value1 = '', value2 ='', value3 = ''
    WHERE ID in 
       (SELECT TOP 350 ID FROM database1
       WHERE value1 = '123')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-01 18:49:38

第一条语句会更快。但前150条记录是随机选择的。在这两个查询中更新的记录可能不相同。由于您将更新分成批处理,因此您的方法可能不会更新所有记录。

我将使用比你的方法更一致的方法来做这件事。

代码语言:javascript
复制
;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 = '' 

此外,在更新数千条记录时,您不必担心事务日志大小,这里不需要批处理

票数 5
EN

Stack Overflow用户

发布于 2017-02-01 19:36:22

从database1中过滤数据,然后按id连接。下面的方法更适合于选择和更新数据。

代码语言:javascript
复制
UPDATE database1 
    SET value1 = '', value2 ='', value3 = ''
    FROM (
        SELECT top 350 ID
        FROM database1
        WHERE value1 = '123'
        ) as db1
    WHERE db1.ID = database1.ID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41977698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档