Merge 表(儲存引擎 MRG_MyISAM)是將多個結構相同的 MyISAM 表邏輯合併為一個虛擬表,查詢時自動路由到各子表,不佔用額外儲存空間,類似資料庫視圖但支援 INSERT 操作。
| 代號 | 優勢 | 說明 |
|---|---|---|
| A | 靜態/動態資料分離 | 歷史歸檔表與熱點寫入表分離,優化備份與查詢 |
| B | 結構相近資料聯合查詢 | 跨分區、跨時間範圍的同結構表一次查完 |
| C | 查詢掃描更少資料 | WHERE 條件可透過子表篩選縮小掃描範圍 |
| D | 大數據集維護更易 | 單表過大導致修復/優化緩慢?拆成多小表再 Merge |
| E | 動態增減子表 | 修改 .MRG 定義檔或 ALTER TABLE 後 FLUSH TABLES 即時生效 |
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE mrg (a INT NOT NULL PRIMARY KEY) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
INSERT INTO t1 VALUES (1),(2);
INSERT INTO t2 VALUES (1),(2);
SELECT a FROM mrg; -- 輸出 1,2,1,2
LAST:新資料寫入最後一個子表(範例為 t2)FIRST:寫入第一個子表NO:禁止直接對 Merge 表 INSERTREPLACE 不生效;AUTO_INCREMENT 行為不可預期。FLUSH TABLES)。日誌分表、歷史歸檔、多租戶同結構隔離、大表拆分後的統一查詢入口。