| 方法 | 語法 | 日誌記錄 | 速度 | 可恢復 | 適用場景 |
|---|---|---|---|---|---|
| 1. DELETE | DELETE FROM <table> | 全記錄 | 最慢 | 是 | 小表、需觸發 Trigger、需保留高水位線 |
| 2. ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE | ALTER TABLE <table> ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE | 不記錄 | 最快 | 否 | 大表、建表時已指定 NOT LOGGED INITIALLY、臨時表清理 |
| 3. IMPORT/LOAD FROM NULL | IMPORT FROM /dev/null OF DEL REPLACE INTO <table>LOAD FROM /dev/null OF DEL REPLACE INTO <table> NONRECOVERABLE | IMPORT 記錄 LOAD 可選 | 快 | IMPORT 是 LOAD 視模式 | 大表、需重置高水位線、生產環境常用 |
| 4. DROP + CREATE | DROP TABLE <table>CREATE TABLE <table> ... | DDL 記錄極少 | 快(大表最快) | 否 | 大表、保有 DDL 腳本、需重建索引/權限/觸發器 |
DELETE Trigger、檢查 FK 約束。NOT LOGGED INITIALLY 選項。REPLACE 模式:先清空表,再載入資料(此處載入空檔案)。IMPORT:記錄日誌,可恢復,速度中等,支援 Trigger/FK。LOAD NONRECOVERABLE:不記錄日誌,速度極快,但表進入「備份待定」狀態,需完整備份後才可恢復。/dev/null,Windows 需建立空檔案(如 nul 或空文字檔)。db2look 可產生)重建所有附屬物件。DB2 無 TRUNCATE TABLE 指令。最接近語義且效能最佳為:
LOAD FROM /dev/null OF DEL REPLACE INTO <table> NONRECOVERABLE
或 IMPORT ... REPLACE(需日誌可恢復時)。
DROP TABLE 會失效依賴視圖/函數/觸發器,重建時勿遺漏。LOAD REPLACE 可能不釋放檔案空間,需 db2dart / REORG 配合。根據表大小、恢復需求、附屬物件複雜度選擇適當方法,才能在安全與效能間取得平衡。