使用多个列执行一个UPDATE
语句是否更有效
UPDATE myTable
SET [col1] = [col1] + 1,
[col2] = [col2] + 1,
[col3] = [col3] + 1,
...
[colN] = [colN] + 1
或多个UPDATE
语句,每个都有一列?
UPDATE myTable SET [col1] = [col1] + 1
UPDATE myTable SET [col2] = [col2] + 1
UPDATE myTable SET [col3] = [col3] + 1
...
UPDATE myTable SET [colN] = [colN] + 1
答案 0 :(得分:6)
这可能因任何一个数据库引擎的特定实现而有所不同,但我将投票表明单个更新通常比连续更新更好。 DB只需要找到一次所需的记录,更新相关值,并完成它。
现在,鉴于有计划缓存,索引,优化器和其他元素可以使事情变得更加智能,很可能是多更新版本几乎接近前者的性能,但是我的期望是,即使在最好的情况下,前者也会表现得更好。
答案 1 :(得分:1)
毫无疑问,单一陈述更有效。每个更新语句都需要将记录提取到内存中,对记录执行更新,然后写出结果。
通过多次更新,您必须多次读入记录并多次写入。只需一次声明,就可以执行一次。
此外,数据库记录对日志文件的更改,以维护数据的完整性。无论要更改的字段数是多少,都会记录每个更新。
当涉及索引,大于内存,约束和触发器的表时,情况会变得更糟。
第二个版本应该比第一个版本大约N倍,其中N是要修改的列数。