MERGE 引擎(又稱 MRG_MyISAM)允許將多個結構完全相同的 MyISAM 表在邏輯上合併為一個虛擬表,查詢時如同操作單一表格,極適合日誌分表、歷史資料歸檔等場景。
CREATE TABLE TEST_MERGE_1 (
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY (ID)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE TEST_MERGE_2 (
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY (ID)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE TEST_MERGE (
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY (ID)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8
INSERT_METHOD=LAST
UNION=(TEST_MERGE_1, TEST_MERGE_2);
| 參數 | 說明 |
|---|---|
ENGINE=MRG_MyISAM | 指定儲存引擎為 MERGE |
INSERT_METHOD | 0=不允許插入;FIRST=插入第一個 UNION 表;LAST=插入最後一個 UNION 表(預設) |
UNION=(...) | 列出要合併的基礎表名稱,順序影響 INSERT_METHOD 行為 |
FLUSH TABLES 重新載入。.frm:表結構定義.MRG:UNION 表名稱清單(每行一個表名)MERGE 引擎為 MyISAM 分表查詢提供極佳便利性,但在 InnoDB 支援分區表(Partitioning)的現代版本中,分區表通常是更優選擇(支援交易、外鍵、行鎖)。視專案需求評估採用。