【发布时间】:2021-07-05 14:36:02
【问题描述】:
我目前正在尝试优化 UPDATE 语句,该语句每天执行一次以更新超过 1000 万行的列,并且需要数小时。很简单:
UPDATE table SET column = ''
此表只有 2-3 个索引,不包括提到的列。
由于大多数行已经更新,仅针对提到的列的索引是否可以使 sql server 更快地查找列以获得更快的更新?谢谢!
【问题讨论】:
-
我想,最好提供完整的查询,因为 UPDATE table SET column = '' 不是为了优化。无论如何,如果没有谓词,您将获得 Table Scan
-
您在此处更新每一行;在列上添加索引更有可能使过程变慢,而不是更快。
-
你肯定不需要更新已经是
''的列,所以大概你还没有分享完整的声明? -
@Stu 每天都会更新新行
-
为什么不只更新您实际需要的行?即添加 where 子句
WHERE Column <> '' OR Column IS NULL?这应该可以防止大量不必要的开销
标签: sql-server indexing sql-update query-optimization