将大量数据插入数据库时​​的效率

时间:2012-12-13 09:59:18

标签: c# sql-server

当我想将大量数据插入数据库时​​,哪种方式更有效? 1.通过调用insert语句逐行插入数据 2.在我的数据库中创建用户定义的表类型,并编写一个存储过程以将DataTable插入到数据库中。 为什么?

3 个答案:

答案 0 :(得分:1)

效率最高的是SQL Bulk Insert

为了进一步提高效果,您可以使用SqlBulkCopy to SQL Server in Parallel

答案 1 :(得分:0)

这可能会因具体工作量而异。

我们只能告诉您哪些选项可供您使用 - 由您来衡量每个选项在特定情况下的效率。

选项:

  • SQLBulkCopy
  • INSERT单行语句
  • INSERT包含多行的语句(尝试使用不同的行数)
  • 存储过程(具有上述变体)

答案 2 :(得分:0)

2要快得多,因为涉及每行操作的任何事情(RBAR)本质上都很慢。我使用表值参数进行了大量测试,发现它们接近批量大小高达1,000,000行的批量插入的性能。但是,这纯粹是轶事,你的里程可能会有所不同。

另外,我建议不要使用DataTable并写一些更直接流式传输行的内容。我在博客上发表了here