1.2 億筆記錄的更新策略:一種有效的方法
更新包含1.2 億筆記錄的表格可能是一項艱鉅的任務。預設更新方法可能會耗盡資源並花費較長時間。為了克服這個挑戰,更有效的方法是使用 SELECT 語句填入單獨的表格。
填充輔助表的步驟
對於沒有聚集索引的表在沒有並發DML的時期,可以應用以下步驟:
- 複製BaseTable: 使用SELECT 語句建立一個複製.BaseTable,其中包含dbo.BaseTable中的資料以及設定為 -1 的新 INT 列。
-
修正複製: 重新建立複製表上的索引、限制等。
-
交換錶:利用 ALTER SCHEMA ... TRANSFER 交換原始表和複製表。
-
清理:刪除舊表。
對於具有聚集索引或其他索引的表複雜性,需要更詳細的流程:
非簡單的詳細流程場景
-
重新建立BaseTable:將原始表克隆到具有聚集索引、識別列、計算列和新 INT 列的克隆架構中。
-
排除約束:省略觸發器、外鍵約束、非群集索引,並檢查限制。
-
測試插入:執行一個小型插入操作以驗證克隆表的功能。
-
截斷複製:清除複製表。
-
批次插入: 執行批次插入以批次日誌或簡單復原模式複製表。
-
重新建立約束:一一重新建立所有非聚集約束、索引、觸發器和檢查約束。
- 架構傳輸: 將複製表移至 dbo 架構,將原始表移至備份架構。
-
校正操作: 如果適用,執行任何必要的校正操作。
結論
利用這種選擇和填充方法,可以有效地更新大型表。這種方法可以顯著減少表更新所需的時間,對於記錄數量較多的表來說是一個可行的解決方案。
以上是如何有效率更新1.2億筆記錄的表格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!