簡體   English   中英

計算后更新數百萬行

[英]Updating millions of Row after Calculation

我正在尋求有關我應該如何執行以下操作的建議:

  1. 我在 SQL 服務器中有一個表,大約有 3 -6 百萬條記錄和 51 列。
  2. 從數學計算中所取的 45 列數據中計算出一個值后,只需更新一列。
  3. 我已經通過 C# 完成了數學計算,並且我能夠從中創建數據表 [有數百萬條記錄是]。

現在我想以最有效的方式將它們更新到數據庫中。 我知道的選項是

  1. 對每條記錄運行更新查詢,因為我在數據讀取器上使用循環來進行數學運算並創建 DataTable。
  2. 創建臨時表並使用 SQLBulkCopy 復制數據,然后使用 MERGE 語句
  3. 雖然這很難做到,但是可以嘗試在 SQL 中使用 Function 來完成所有數學運算,並且只需運行簡單的更新,無需任何條件即可一次性全部更新。

我不確定哪種方法更快或更好。 任何的想法?

編輯:為什么我害怕使用存儲過程

  1. 首先,我不知道我是怎么寫的,我是新手。 雖然現在也許是時候去做了。
  2. 我的公式是取一列,對它們應用一個論壇,以及額外的常量值 [這也是列名稱的一部分],然后取所有 45 列並應用另一個公式。
  3. 結果將存儲在第 46 列中。

謝謝。

如果您有一個字段包含來自數據庫中其他字段的計算,最好將其設為計算字段或通過觸發器維護它,以便在任何來源更改數據時,都會保留計算。

您可以創建一個可以直接從 sql 調用的 .net 函數,這里是如何創建一個http://msdn.microsoft.com/en-us/library/w2kae45k%28v=vs.90%29.aspx的鏈接。 創建函數后,運行簡單的更新語句

你不能在 c# 中創建一個標量值函數,並將它作為計算列的一部分調用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM