参数传递Vs表值参数从.Net应用程序Vs XML到SQL 2008

Har*_*boy 10 xml sql-server asp.net stored-procedures

由于我们正在开发一个asp .net项目,有三种方法可以在需要多行更新/插入时将数据更新到数据库中

我们假设我们需要更新员工教育细节(可能是1,3,5或10条记录)

更新数据的方法

  1. 将值作为参数传递(传统方法),如果有10条记录则需要10次往返

  2. 将数据作为xml传递并在存储过程中写入逻辑以从xml获取该数据并更新表(仅需要单个往返)

  3. 使用表值参数(仅需要单个往返)

注意:数据以List的形式提供,因此如果需要传递,我需要将其转换为xml或任何其他格式.

没有.在整个应用程序中我们需要批量更新数据(或多个记录)

我只需要你的建议

  1. 哪种方法会更快(如果有其他一些开销,请提及)

  2. 任何方法都可管理性或可测试性

  3. 任何其他方法的瓶颈或问题(序列化/反序列化问题或数据传递大小限制)

  4. 您为相同操作建议的任何其他方法

谢谢

mar*_*c_s 8

表值参数方法很可能是最好的方法,因为您可以一次更新整批行; 毕竟,你得到一张可以轻松加入的桌子.

其他方法都是逐行的,这本身就比较慢,或者需要在SQL Server端进行相当多的混乱; 通常情况下,这不仅非常有趣,而且更容易出错,并且通常不仅仅是简单地连接两个表而且性能更差.

这正是TVP引入的场景 - 解决"逐行"或"乱用XML"问题.我相信微软有一个很好的理由来介绍这个,如果他们这样做,你一定要试一试,看看它是否有效.

但同样:这只是一种"直觉"而不是真正了解你的所有细节.通过测试所有三个选项,只有你自己才能真正找到它.有许多其他影响和参数可能发挥作用,任何人回答都不可能知道....