首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引可以优化UPDATE语句吗?

索引可以优化UPDATE语句吗?
EN

Stack Overflow用户
提问于 2021-07-05 14:36:02
回答 1查看 68关注 0票数 0

我目前正在尝试优化一个UPDATE语句,它每天执行一次,以更新超过1000万行的列,它需要花费几个小时。它非常简单:

代码语言:javascript
复制
UPDATE table SET column = ''

此表只有2-3个索引,不包括上述列。

由于大多数行都已经更新,那么仅针对上述列的索引是否可以使sql server更快地查找列以获得更快的更新?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-08 20:21:05

既然您说“大多数行已经更新了”,那么您可能应该添加一个WHERE条件,以便只更新真正需要更新的行(就像其他人已经说过的那样)。如果没有WHERE子句,all记录将被更新,即使是那些已经具有相同值''的记录。

因此,即使您的90%的记录需要更新,如果您避免重复更新,它仍然会更快一些。但在这种情况下,在该列上有索引只能减缓查询的速度,因为在更新基础表记录时,必须更新每个索引。

为了从索引中获益,您需要具有低选择性的查询,就像使用SELECT-queries一样。什么可以被认为是“足够低”取决于许多因素。有时,一个指数可以帮助10-20%的选择性。其他时候,与人们普遍的看法相反,即使有1%的选择性,它也会使事情变得更糟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68257955

复制
相关文章

相似问题

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