簡體   English   中英

更新程序名稱-數百萬條記錄

[英]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;

您可以重復執行此更新,並在兩次更新之間進行提交。

  1. 請為字段progid添加索引。

  2. 添加一個條件來過濾名稱為<>'NEW PROGRAM NAME'的記錄

  3. 我不建議您通過一個腳本更新500萬行。 您應該每批更新5000條記錄,以避免行鎖定。

  4. 如果可以更改數據庫設計,則應執行數據庫規范化。 創建一個表“程序”以存儲程序和名稱,表“帳戶”僅存儲字段程序,以便您只需更新表“程序”中的記錄之一

     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.

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