Performance T-SQL:如果某些列值相同,则更新性能

Performance T-SQL:如果某些列值相同,则更新性能,performance,tsql,sql-server-2012,Performance,Tsql,Sql Server 2012,假设我要对SQL Server 2012中存储为行的对象执行更新,其中一些列值不同,但大多数列值相同。问题很简单-Sql Server会只对更改的列执行硬盘写入,还是会写入整行,用相同的列值无用地重写现有列值?如果对象被保存在分布在多个表中的数据库中(复杂对象),会怎么样 我应该重新表述一下我的问题——在更新行时对某些列进行不更新的性能是否值得担心? 顺便说一句,我使用id列作为聚集键。这取决于许多因素。索引、文件布局、硬件资源等不能真正回答您的问题,除非您可以更具体一些。如果您使用相同的值更新

假设我要对SQL Server 2012中存储为行的对象执行更新,其中一些列值不同,但大多数列值相同。问题很简单-Sql Server会只对更改的列执行硬盘写入,还是会写入整行,用相同的列值无用地重写现有列值?如果对象被保存在分布在多个表中的数据库中(复杂对象),会怎么样

我应该重新表述一下我的问题——在更新行时对某些列进行不更新的性能是否值得担心?
顺便说一句,我使用id列作为聚集键。

这取决于许多因素。索引、文件布局、硬件资源等不能真正回答您的问题,除非您可以更具体一些。如果您使用相同的值更新列,那么猜猜看,它将使用相同的值更新列。第二,一次只能更新一个表。听起来使用DELETE/INSERT代替update会更好,但要确定,还是测试一下。检查这个问题