首頁 >資料庫 >mysql教程 >如何有效率更新1.2億筆記錄的表格?

如何有效率更新1.2億筆記錄的表格?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 11:57:38280瀏覽

How Can I Efficiently Update a Table with 120 Million Records?

1.2 億筆記錄的更新策略:一種有效的方法

更新包含1.2 億筆記錄的表格可能是一項艱鉅的任務。預設更新方法可能會耗盡資源並花費較長時間。為了克服這個挑戰,更有效的方法是使用 SELECT 語句填入單獨的表格。

填充輔助表的步驟

對於沒有聚集索引的表在沒有並發DML的時期,可以應用以下步驟:

  1. 複製BaseTable: 使用SELECT 語句建立一個複製.BaseTable,其中包含dbo.BaseTable中的資料以及設定為 -1 的新 INT 列。
  2. 修正複製: 重新建立複製表上的索引、限制等。
  3. 交換錶:利用 ALTER SCHEMA ... TRANSFER 交換原始表和複製表。
  4. 清理:刪除舊表。

對於具有聚集索引或其他索引的表複雜性,需要更詳細的流程:

非簡單的詳細流程場景

  1. 重新建立BaseTable:將原始表克隆到具有聚集索引、識別列、計算列和新 INT 列的克隆架構中。
  2. 排除約束:省略觸發器、外鍵約束、非群集索引,並檢查限制。
  3. 測試插入:執行一個小型插入操作以驗證克隆表的功能。
  4. 截斷複製:清除複製表。
  5. 批次插入: 執行批次插入以批次日誌或簡單復原模式複製表。
  6. 重新建立約束:一一重新建立所有非聚集約束、索引、觸發器和檢查約束。
  7. 架構傳輸: 將複製表移至 dbo 架構,將原始表移至備份架構。
  8. 校正操作: 如果適用,執行任何必要的校正操作。

結論

利用這種選擇和填充方法,可以有效地更新大型表。這種方法可以顯著減少表更新所需的時間,對於記錄數量較多的表來說是一個可行的解決方案。

以上是如何有效率更新1.2億筆記錄的表格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn