在我们的应用程序中,许多页面都包含“更新”,当我们更新表格时,我们也会更新不必要的列,这些列也不会更改。 我想知道有没有办法避免不必要的列更新?我们在.net 2003中使用存储过程。在以下链接中,我找到了一个解决方案,但它不适用于存储过程。
由于
答案 0 :(得分:1)
您真的只能通过一个为您生成更新查询的良好ORM工具来实现此目的。它通常会查看更改内容并仅为更改的列生成查询。
如果您正在使用存储过程,那么当您调用存储过程时,无论如何都会将所有列值发送到数据库,因此您无法保存。 SP可能只是执行一个普通的UPDATE语句。然后RDMS接管。如果它没有不同,它将不会在物理上更改光盘上的数据。它足够聪明。
所以我的答案简而言之:不要担心。这并不是什么大不了的事情,需要大幅度的改变来获得你想要的东西,你甚至看不到性能优势。
答案 1 :(得分:0)
当我在一家金融软件公司工作时,表现至关重要。有些表有数百列,更新语句代价很高。我们创建了自己的ORM层(在java中),其中包含一个对象缓存。当我们生成更新语句时,我们将每个字段的当前值与加载时的值进行比较,并仅更新已更改的字段。
我们的数据库是SQLServer。我不记得性能的提升,但它是实质性的,值得投资。我们还尽可能地进行批量插入和更新。
我相信Hibernate和其他大型ORM都会为你做这类事情,如果你不想自己写一个。