sql - 更新具有多列的表中的行

标签 sql sql-server performance

我有一个表(实际上有几个),其中包含很多列(可能超过 100 个)。如果只更改了几列,那么更新表中的行时什么是最佳性能。

  1. 动态构建 UPDATE 语句,仅更新已更改的列。
  2. 构建包含所有列(包括未更改的列)的参数化 UPDATE 语句。
  3. 创建一个将所有值作为参数并更新行的过程。

我正在使用 SQL Server。表中没有 BLOBS。

谢谢/M

最佳答案

我想说,从性能角度来看,2 号和 3 号是等效的。如果您使用 PK 来确定要更新哪一行并且它是一个聚集键,那么我不会担心将列更新为自身。第一种情况的问题是,您将导致“过程缓存膨胀”,您有许多类似的计划都占用您的计划缓存,因为它们是更新的略有不同的迭代。

如果您打算进行大规模更新,我可能会犹豫是否建议更新所有列,因为这可能会导致 FK 查找等。

谢谢, 埃里克

关于sql - 更新具有多列的表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302475/

相关文章:

mysql - 如何从表中进行选择并删除所有其他未选择的条目?

sql - 如何在 SQL Server 2005 中制作尴尬的 sql 表枢轴?

javascript - 为什么 DOM 单击事件需要这么长时间?

介于或大于 > 条件下的 MySQL 查询优化

sql - 在 SQL 中安全地更新计数(字段)

SQL Server 2008 筛选索引

sql-server - 优化 T-SQL 的高级工具?

sql-server - 如何在 SELECT 中排除相同的行

performance - VS2012 中非常慢的 Entity Framework 模型设计器

mysql - 更新 SQL 中的字段