我有一个表(实际上有几个),其中包含很多列(可能超过 100 个)。如果只更改了几列,那么更新表中的行时什么是最佳性能。
- 动态构建 UPDATE 语句,仅更新已更改的列。
- 构建包含所有列(包括未更改的列)的参数化 UPDATE 语句。
- 创建一个将所有值作为参数并更新行的过程。
我正在使用 SQL Server。表中没有 BLOBS。
谢谢/M
最佳答案
我想说,从性能角度来看,2 号和 3 号是等效的。如果您使用 PK 来确定要更新哪一行并且它是一个聚集键,那么我不会担心将列更新为自身。第一种情况的问题是,您将导致“过程缓存膨胀”,您有许多类似的计划都占用您的计划缓存,因为它们是更新的略有不同的迭代。
如果您打算进行大规模更新,我可能会犹豫是否建议更新所有列,因为这可能会导致 FK 查找等。
谢谢, 埃里克
关于sql - 更新具有多列的表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302475/