c# - SQL BulkCopy 与 OPENDATASOURCE 哪个更快

标签 c# .net sql-server sqlbulkcopy

我想从 access .mdb 文件中将数据插入到 sqlserver 中, 这是使用 OLEDB 执行数据插入 SQL BulkCopy 或 OPENDATASOURCE 的最快方法。

数据大约是 20 个表的 100,000 条记录。

谢谢。

我正在从 C# 代码执行此操作,我需要哪一个执行得更好,我无法比较,因为 OPENDATASOURCE 正在请求管理员权限。

最佳答案

在我看来,使用 SQL 批量复制可以获得插入大量数据的最佳插入性能,因为此方法完全绕过 SQL 查询语言并将数据直接流式传输到 SQL。

进一步的性能改进

  • 默认情况下,SqlBulkCopy 在大容量复制操作期间使用行锁。如果在 SqlBulkCopyOptions 中指定了 TableLock 选项,它会在大容量复制操作期间获得大容量更新锁,并且性能将得到提高。
  • Clustered Table:如果可行,加载它的最佳方式是移除聚集索引。
  • 索引:索引在并行性方面造成了巨大的问题,所以它总是一个好方法吗? 在没有任何索引事件的情况下加载的想法

您可以阅读更多白皮书:SqlBulkCopy 的性能 http://www.sqlbi.com/wp-content/uploads/SqlBulkCopy-Performance-1.0.pdf

关于c# - SQL BulkCopy 与 OPENDATASOURCE 哪个更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17526092/

相关文章:

c# - C#读取文本文件并将数据发送到mysql查询

c# - 我应该使用哪个 "using"来在类里面进行 session /请求?

.NET 对象大小限制

c# - 如何学习 MVC——*不*在网络环境中

c# - 数据库中的 Entity Framework 生成命名空间错误

c# - 安全保存银行账户数据

C# DLL 配置文件不存在

sql - 基于状态变化的分组

sql-server - Management Studio 默认文件保存位置

sql-server - 如何使用输出和退出代码运行 SQL Server 代理 Powershell 脚本