SQL UPDATE:一个语句中的多个列还是多个单列语句?

时间:2012-09-13 17:57:46

标签: sql sql-server performance sqlperformance

使用多个列执行一个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

2 个答案:

答案 0 :(得分:6)

这可能因任何一个数据库引擎的特定实现而有所不同,但我将投票表明单个更新通常比连续更新更好。 DB只需要找到一次所需的记录,更新相关值,并完成它。

现在,鉴于有计划缓存,索引,优化器和其他元素可以使事情变得更加智能,很可能是多更新版本几乎接近前者的性能,但是我的期望是,即使在最好的情况下,前者也会表现得更好。

答案 1 :(得分:1)

毫无疑问,单一陈述更有效。每个更新语句都需要将记录提取到内存中,对记录执行更新,然后写出结果。

通过多次更新,您必须多次读入记录并多次写入。只需一次声明,就可以执行一次。

此外,数据库记录对日志文件的更改,以维护数据的完整性。无论要更改的字段数是多少,都会记录每个更新。

当涉及索引,大于内存,约束和触发器的表时,情况会变得更糟。

第二个版本应该比第一个版本大约N倍,其中N是要修改的列数。

相关问题