仅更新已更改的值或更新未更改的值和更改后的性能是否存在差异?

时间:2018-01-24 08:37:39

标签: sql-server

我有一个设置页面,用户可以选择更新他们的信息。由于他们的信息在他们可以选择编辑的文本字段中显示为默认值,因此当他们提交表单时,即使他们没有更改,我也会更新他们的信息。

因此,在执行更新之前检查值是否更改会更好,还是继续更新未更改的值和更改的值是否正常?

1 个答案:

答案 0 :(得分:3)

my tests中,只要我们讨论的是行内列而没有其他索引,只更新整行,而不是挑选已更改值的各列,这总是有意义的。

当我们处理LOB列时,这可能会有所不同,这些列通常存储在行外,并且有一些额外的开销(检查相等性和更新本身)。

我没有测试确保至少一个列已经更改,然后根本无法执行更新。 可能值得检查并在没有必要时避免工作,具体取决于您的表/索引结构,以及在没有任何更改时尝试执行更新的百分比。

当您要更新的列也在非聚集索引中时,我也没有测试影响。索引越多,可能越有可能从首先检查中获得。如果您有18个包含特定列的非聚集索引,并且该列值实际上没有更改,则避免该更新可能是有意义的。

您可以按照相同的测试技术来衡量这些......