在 SQL Server 2008 中使用 .Net 大容量复制或表值参数进行批量插入的性能比较

发布于 2024-12-24 00:41:22 字数 424 浏览 0 评论 0原文

我正在 VB.Net (4.0) 中开发桌面应用程序 会有很多SQL脚本,其中包含很多插入查询。 目前我们正在使用 SMO (http://msdn.microsoft.com/en-us/library/ms162557.aspx) 运行脚本

一种方法

为了提高性能,我们计划将 sql 脚本更改为 xml 文件(而不是插入查询) ,它将有 定义了适当的 xsd 的 xml 数据)。 将 xml 加载到数据集并使用 SQL 大容量复制我们尝试插入到 SQL Server。

第二种方式

将 xml 加载到 dataSet 根据数据集中的数据表(从 xml 文件创建)创建用户定义的表类型,并创建一个具有参数作为该表类型的存储过程。在该 sp 中,它将包含 插入表名 从表值参数中选择 *。

所以请建议我最好和最合适的方式。提前致谢。

I am working on a desktop application in VB.Net (4.0)
There will a lot of SQL scripts which contains a lot of insert queries .
Currenlty we are running the scripts using SMO (http://msdn.microsoft.com/en-us/library/ms162557.aspx)

One way

For performance, we have planned to change the sql scripts to xml file ( instead of insert queries, it will have
xml data with a proper xsd defined ).
Loads xml to dataSet and Using SQL Bulk Copy we are trying to insert to SQL Server.

Second way

Loads xml to dataSet
Creates user defined table type based on the datatable in dataset (creted from xml file) and create a stored procedure which has parameter as this table type . In that sp, it will contains
insert into tablename
select * from tablevalueparameter.

So please suggest me to best and suitable way. Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

够钟 2024-12-31 00:41:22

不科学的答案...

  • SQLBulkCopy 使用不同的经过优化的 API
  • 表值参数的行为类似于“正常” SQL

TVP 方法的性能与运行单个 INSERT 语句相同数量级,我预计这比 SQLBulkCopy 慢。

但是,我希望每种技术取决于您拥有的行数:对于每批 1000 或 10k+ 行,我会不假思索地使用 SQLBulkCopy,因为我不需要存储过程。

Unscientific answer...

  • SQLBulkCopy uses a different API that is optimised
  • A table valued parameter acts like "normal" SQL

The TVP approach would the same order of magnitude performance as running individual INSERT statements, which I'd expect slower than SQLBulkCopy.

However, I'd expect each technique depends on how many rows you have: for 1000s or 10k+ per batch I'd use SQLBulkCopy without thinking because I don't need a stored procedure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文