有人問我跑DB轉換後沉重的更新,對於訂單ID的一個給定的名單,手柄記錄
我需要打開名冊和處理每個ID。
例如:
- 客戶表:
創建表CustOrders (ID INT, CustFName VARCHAR(10), CustLname VARCHAR(10), 主鍵(ID) )
對於列表中的每個id,存儲過程將更新該記錄。
我的第一個念頭是:
創建它接受的ID(用表值參數)的列表存儲過程。
每個ID,做我的東西
但後來我意識到這將需要爲我想出了一個主意
太多的時間和有和嘗試,並在運行並行模式,例如:
嘗試運行幾個存儲的過程,其中每個存儲的過程處理不同批量的ID的,
通過Mod運算符分例如 。
這就是我決定發佈這個問題的原因,也許你有一個更好的想法,如何編寫可以並行模式運行的程序。
更新它如何?如果您提供更多詳細信息,則可能會向您展示如何在不逐一進行的情況下執行此操作(這肯定會比一次更新所有代價更高,SQL Server非常擅長,或者至少分批例如,一次10000行)。無論何時您在SQL Server中工作,並且認爲「我需要一次執行x行」,並再次思考,因爲在大多數情況下,這是錯誤的方式。 – 2013-04-07 19:21:31
還有誰的要求是這些更新並行運行?有人認爲可以同時對同一頁面進行兩次更新嗎?儘管可以根據聚集索引將更新分成不同的批次,但這隻有在表上沒有聚集索引時纔有所幫助,並且在協調時仍然很痛苦。爲什麼不告訴我們你是如何更新的,獲取最有效方法的建議,然後*看看是否存在性能問題。與其告訴我們您需要通過並行化來解決性能問題。 – 2013-04-07 19:23:06