更新数据库记录中的各个字段时的最佳做法

Col*_*lin 2 .net sql database

我使用.NET创建了一个数据访问层.在我更新数据库记录的每个地方,我都使用了sql

UPDATE Customer SET FirstName =:FirstName,LastName =:LastName,Address1 =:Address1,Address2 =:Address2,.... etc

这意味着记录中的每个字段都会更新,即使只有一个字段可能已更改.一位同事已经对此提出异议,说我们应该只更新一个字段,如果它已经改变,引用带宽作为问题 - 比如我们有160个字段,然后我们传递160个字段的数据.我想我可以节省Web服务器和数据库服务器之间的带宽,如果我检查一个值是否已经改变,并且纯粹基于实际更改的值生成sql.

在Web服务器和客户端之间,我现在需要传递旧值和新值,所以我可能会在那里增加带宽(但是无论如何ASP.NET已经做到了这一点,我不确定我们是否可以关闭这一点以便这样做可能不是问题).

那么最佳做法是什么?我是否应该担心更新数据库记录中的所有字段?我如何仅更新已更改的字段?

编辑添加10月29日:有谁知道NHibernate的作用?也许这是投入时间学习如何以这种方式去做的一个论点.

kei*_*en7 6

过早优化是万恶之源.

有没有理由,你真的有带宽问题吗?

根据我的经验,跟踪更改可能需要大量工作(即需要维护大量代码),具体取决于实现方式.有一些优雅的方式,但我认为你做的很好,除非有一些证据支持改变.

如果您计划实施一些自定义形式的更改跟踪,我肯定不会与数据库"聊天".首次从数据库中提取对象并在本地进行比较时,在本地制作对象的副本.