首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Merge 表優勢詳解:大數據集管理的輕量級方案

     編輯:MySQL 資料庫相關知識

什麼是 Merge 表?

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

INSERT_METHOD 參數

  • LAST:新資料寫入最後一個子表(範例為 t2)
  • FIRST:寫入第一個子表
  • NO:禁止直接對 Merge 表 INSERT

五大使用限制(必讀)

  1. 所有子表結構、索引、引擎必須完全一致(MyISAM)。
  2. Merge 表不支援唯一性檢查(子表各自有 PK,合併後會重複)。
  3. REPLACE 不生效;AUTO_INCREMENT 行為不可預期。
  4. 刪除 Merge 表不影響子表;刪除子表後 Merge 表查詢在 Windows/Linux 行為不同(Linux 下仍可查到已刪子表資料,直到 FLUSH TABLES)。

適用場景

日誌分表、歷史歸檔、多租戶同結構隔離、大表拆分後的統一查詢入口。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved