【发布时间】:2021-07-25 02:33:44
【问题描述】:
有一张表,其中有一列“分数”和 10 行。 2 行有 10 分,其他 8 行有 0 分。我想将所有行的分数设置为0。哪种方式更优化?:
-
UPDATE <table> SET scores = 0 -
UPDATE <table> SET scores = 0 WHERE scores <> 0
【问题讨论】:
-
我认为选项二,它比选项一所需的限制更少,并且它只会更新实际需要它的行。请记住,您的系统、架构和数据都是其中的重要因素。
-
pre optimization is the root of all evil 所以,请不要在只更新几条记录时考虑这个问题。
-
我总是赞成第二种选择。让 DBMS 准确更新需要更新的行。您更新的每一行都可能导致锁定、额外检查、回滚区域中的条目、审核日志条目以及触发本身可能执行昂贵操作的触发器。
标签: sql optimization sql-update