我已经使用.NET创建了数据访问层。在任何更新数据库记录的地方,我都使用sql来实现以下目的:
更新客户设置FirstName =:FirstName,LastName =:LastName,Address1 =:Address1,Address2=:Address2,.... etc
这意味着即使只更改了一个字段,记录中的每个字段也会更新。一位同事对此表示质疑,他说我们仅应在字段已更改的情况下更新它,并以带宽为问题-
假设我们有160个字段,然后传递160个字段的数据。我想如果我检查一个值是否已更改,并且纯粹基于实际更改的值生成sql,则可以节省Web服务器和数据库服务器之间的带宽。
现在,在Web服务器和客户端之间,我需要同时传递旧值和新值,因此可能在那儿增加带宽(但是ASP.NET还是已经这样做了,我不确定是否可以将其关闭,因此可能不是问题)。
那么什么是最佳实践?我应该担心更新数据库记录中的所有字段吗?我将如何只更新已更改的字段?
编辑于10月29日添加:有人知道NHibernate的功能吗?也许这是花时间学习如何做到这一点的论点。
过早的优化是万恶之源。
为此,您是否确实存在带宽问题?
以我的经验,根据更改的实现方式,跟踪更改可能需要大量工作(即需要维护大量代码)。有一些优雅的方法,但是我认为除非有证据支持更改,否则您所做的一切都很好。
如果您打算实施某种自定义形式的变更跟踪,那么我当然不会与数据库进行“闲聊”。首次从数据库中提取对象并与之进行比较时,请在本地创建对象的副本。
我正在开发Spring Boot Rest应用程序。ORMHibernate。我在DB中有更新相关实体的endpoint,例如,我有表“form”和表“rows”,每一行都附加到表单,所以一个表单可以包含表“rows”中的多行,每一行都有指向“form”的链接。 用例:我们正在获取要保存的行列表 其中一些新so is不包含ID 最好的方法是手动处理所有这些情况吗?或者是否有任何ORM/Spring
我知道“newInstance”-Pattern(实例化新Android片段的最佳实践)。但是如果另一个片段更改数据,我如何更新片段的这些参数? 我知道片段/活动之间的回调方法,但这些回调不会更新参数?! 例如:在创建片段时,我将URI与包一起传递给它。然后,另一个片段通过对第一个片段的changeUri(URI-URI)方法回调来更改这个URI。如果然后重新创建片段(例如由于屏幕旋转),它将使用
问题内容: 我需要将网址存储在MySQL表中。定义将包含长度不确定的URL的字段的最佳实践是什么? 问题答案: 流行的Web浏览器中最小的公分母最大URL长度: 2,083 (Internet Explorer) http://dev.mysql.com/doc/refman/5.0/en/char.html VARCHAR列中的值是可变长度的字符串。 在MySQL 5.0.3之前,长度可以指定为
问题内容: 我有一个表格,其中有一个父/子关系,其中每个孩子的列数据都需要连接到父母中。 这是一些示例数据,该数据已损坏,因此父记录(Id = 96) 为 NULL 。关系是通过字段进行的: 数据应如下所示: 编辑: 后代级别可以是任何深层次,但深子级后代需要更新为主要的父级 。拿下面的最后两个记录( Id = 100 和 Id = 101 )都链接到97。因为 Id = 97 IS NOT NU
问题内容: 这段代码正在更新薪水为13000的所有记录。 相反,我想将薪水为1300的记录更新为值13000。 您能告诉我我在哪里出错吗? 我正在使用隐式游标访问记录.. 对于每个记录,我正在检查该记录的sal值.. 如果特定记录中的薪水值是1500,我想将其更新为15000。 问题答案: 只要您可以使用一条语句进行更新,就应该这样做,而不要使用循环。这样,您将获得非常巨大的性能提升。或者反之,循
请注意,我已经阅读了Docusign RestAPI guide Version2中的Modify tabs for Receiver文章。那是用来修改标记类型还是标记值的?