Sql server 在更新查询中将列设置为自身

Sql server 在更新查询中将列设置为自身,sql-server,Sql Server,我有一个这样的问题 UPDATE [Table.Name] SET Id=@Id, Name=@Name , ... 等等 当我这样做的时候会发生什么 Update [Table.Name] Set Id=Id, Name=Name, ... 我知道实际上这个值不会改变,但我想知道sql在后台做了什么。它是在后台执行秘密选择并将值设置为自身,还是只是在更新查询中忽略该单元格?这样做而不是将整行发送到表中是否会提高性能 查看查询计划。SQL server进行更新。SQL server的哪个版本

我有一个这样的问题

UPDATE [Table.Name] SET Id=@Id, Name=@Name , ...
等等

当我这样做的时候会发生什么

Update [Table.Name] Set Id=Id, Name=Name, ...

我知道实际上这个值不会改变,但我想知道sql在后台做了什么。它是在后台执行秘密选择并将值设置为自身,还是只是在更新查询中忽略该单元格?这样做而不是将整行发送到表中是否会提高性能

查看查询计划。SQL server进行更新。

SQL server的哪个版本?(在新版本中可能会有所不同)这只是一个无用的更新,不再是了。如果不想更改列,则不要将其添加到update语句SQL会执行更新,它只会将列值设置回自身。但是,如果您希望以相同的方式修改一组数据,那么这将变得非常强大。如果您有一个价格表,并且需要增加10%,您可以这样做:更新table1 set Field1=Field1*1.1,它将迭代表中的所有行,并逐行执行正确的值计算。整个表将使用相同的值进行更新,您将看不到任何可视更改,但sql server将经历更新表索引(如果有)和记录完整操作的痛苦。不管sql server的版本如何,真的不明白为什么要进行这样的更新。你说的“这样做而不是将整行发送到表中的性能提高”是什么意思