SqlBulkCopy与 TVP与 XML参数与 单个插入过程为20-200个插入?

N0A*_*ias 3 .net t-sql stored-procedures

在.Net Aspx页面或Web服务需要在表格中执行大约20-200行插入的情况下,您会推荐以下哪种方法?为什么?小的性能提升可能意味着我仍然会使用我最熟悉的方法,所以请告诉它是否会产生很大的不同.关于什么时候使用一个在另一个上真正有意义的任何一般指导将不胜感激.

  1. 表值参数
  2. SqlBulkCopy类
  3. 存储过程中的XML参数和使用XQuery
  4. 二十到二百个单独插入存储过程调用

其他注意事项:每个插入所需的逻辑处理量各不相同,但可以假设几乎不需要.我最感兴趣的是,对于这些小批量插件的四种选择之一,每天可以重复几十到几百次,可能会有大量的性能/易用性/其他好处.

Ode*_*ded 9

对于如此少量的行,我个人会使用表值参数 - 这是它们的最佳用途之一.

SqlBulkCopy对于更大量的数据和多个表,我更像是一个主力.

XML参数将是处理器密集型的,并且XML仍然不像TVP那样是SQL Server的本机.

到目前为止,多个插入是最糟糕的选择 - 200个连接,200个交易等...


关于哪个选项表现最佳的真正答案取决于您的具体情况.您需要测试所有方法,并为您选择最好的方法.