[英]Update Program Name - Multi Million Records
我需要更新帳戶表中的500萬行。
update account set name = 'NEW PROGRAM NAME' where progid = 1111;
但是,常規更新正在運行,並且運行了1.5個小時。 我不得不取消它,然后花了一些時間才能取消。 一團糟。
我需要有關如何快速且盡可能短地進行更新的專家建議。
我更喜歡1個腳本。 但我當時想可能是:
update account set name = 'NEW PROGRAM NAME' where progid = 1111 and rownum <= 500000;
然后提交?
您非常接近:
update account
set name = 'NEW PROGRAM NAME'
where progid = 1111 and name <> 'NEW PROGRAM NAME' and
rownum <= 5000;
您可以重復執行此更新,並在兩次更新之間進行提交。
請為字段progid添加索引。
添加一個條件來過濾名稱為<>'NEW PROGRAM NAME'的記錄
我不建議您通過一個腳本更新500萬行。 您應該每批更新5000條記錄,以避免行鎖定。
如果可以更改數據庫設計,則應執行數據庫規范化。 創建一個表“程序”以存儲程序和名稱,表“帳戶”僅存儲字段程序,以便您只需更新表“程序”中的記錄之一
While (Select Count(1) From account Where progid = 1111 and name <> 'NEW PROGRAM NAME') > 0 Begin update account set name = 'NEW PROGRAM NAME' where progid = 1111 and name <> 'NEW PROGRAM NAME' and rownum <= 5000; End
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.