由于我们正在开发一个 asp .net 项目,因此当需要更新/插入多行时,可以通过三种方式将数据更新到数据库中
假设我们需要更新员工教育详细信息(可能是 1、3、5 或 10 条记录)
更新数据的方法
将值作为参数传递(传统方法),如果有 10 条记录,则需要 10 次往返
将数据作为 xml 传递并在存储过程中编写逻辑以从 xml 获取数据并更新表(只需要单次往返)
使用表值参数(只需要单次往返)
注意:数据以列表形式提供,因此如果需要传递,我需要将其转换为 xml 或任何其他格式。
没有。在整个应用程序中我们需要批量(或多条记录)更新数据的地方
我只需要你的建议
哪种方法会更快(如果有其他开销请说明)
任何方法的可管理性或可测试性问题
任何方法的任何其他瓶颈或问题(序列化/反序列化问题或对数据传递大小的限制)
您为相同操作建议的任何其他方法
谢谢
最佳答案
表值参数方法很可能是最好的方法,因为您可以一次更新整批行;毕竟,您得到了一个表格,您可以轻松加入它。
其他方法要么是逐行的,本质上速度较慢,要么需要在 SQL Server 方面进行一些处理;通常,这不仅不是很有趣,而且比简单地连接两个表更容易出错,而且通常性能更差。
这正是引入 TVP 的场景 - 解决“逐行”或“混淆 XML”的问题。我相信 Microsoft 有充分的理由引入此功能,如果他们这样做,您一定要好好尝试一下,看看它是否有效。
但再次强调:这只是一种“直觉”,并没有真正了解您的所有详细信息。只有您自己通过测试所有三个选项才能真正找到答案。还有许多其他效果和参数可能会发挥作用,任何回答的人都不可能知道......
关于asp.net - 从 .Net 应用程序传递参数与表值参数与 XML 到 SQL 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951565/