繁体   English   中英

加快SQL Server 2008中185k行的更新速度?

[英]Speed up update of 185k rows in SQL Server 2008?

我有一个大约185k行的二进制文件。 C#在几秒钟内解析文件。 用这些数据更新MSSQL表的最佳方法是什么?

我尝试过的:

  1. 最简单的方法 - 读取二进制行,解析,更新表。 整个过程大约需要2天才能更新所有数据。
  2. 合并200个更新查询并立即将它们发送到MSSQL。 在这种情况下,更新需要8到10小时。
  3. 将500多个查询合并为单个查询。 工作得更快,但不时会丢弃超时异常,因此有些更新不会通过。

有关如何加快更新过程的任何建议?

不确定你真的想通过C#来做这件事:可能想要使用BULK INSERT并给它一个文件,你的数据格式正确。

使用SqlBulkCopy (到临时表),然后使用MERGE

批量复制方法可以使用.NET客户端的“推送”有效地传输数据。 使用BULK INSERT需要从服务器“拉”(以及所需的本地文件访问)。

然后, MERGE命令(在SQL Server 2008+中)可用于根据所需规则将数据从临时表插入/更新/ upsert到目标表。 由于此时数据完全在数据库中,因此该操作将尽可能快。 与许多单独的命令相比,使用MERGE 也可能产生性能优势 ,即使是同一事务中的命令也是如此。

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM