簡體   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