-- 1. 複製結構(含索引、主鍵、自增、引擎、字符集)
CREATE TABLE mytbl_new LIKE production.mytbl;
-- 2. 複製資料
INSERT INTO mytbl_new SELECT * FROM production.mytbl;
CREATE TABLE ... SELECT?| 特性 | LIKE + INSERT SELECT | CREATE TABLE ... SELECT |
|---|---|---|
| 索引/主鍵/自增 | ✅ 完整保留 | ❌ 丟失(自增變 DEFAULT 0) |
| 儲存引擎 | ✅ 保留 | ❌ 變為預設引擎 |
| 字符集/校對 | ✅ 保留 | ⚠️ 可能不一致 |
| 外鍵 | ✅ 保留 | ❌ 不複製 |
| 觸發器/視圖 | ❌ 不複製(需單獨處理) | ❌ 不複製 |
CREATE TABLE db2.mytbl_new LIKE db1.mytbl;
INSERT INTO db2.mytbl_new SELECT * FROM db1.mytbl;
CREATE TABLE mytbl_subset LIKE mytbl;
INSERT INTO mytbl_subset (id, name, status)
SELECT id, name, status FROM mytbl WHERE status = 1;
CREATE TABLE mytbl_new LIKE mytbl;
-- 假設 id 為自增主鍵,每批 1 萬行
INSERT INTO mytbl_new SELECT * FROM mytbl WHERE id BETWEEN 1 AND 10000;
INSERT INTO mytbl_new SELECT * FROM mytbl WHERE id BETWEEN 10001 AND 20000;
-- ... 循環直到覆蓋全表
若源表有持續寫入,直接 INSERT ... SELECT 會造成主從延遲、鎖爭用。生產環境請使用:
兩者皆採用「建影子表 → 分批複製 → 追蹤 Binlog 增量 → 原子切換」流程,實現 **DDL 無鎖、資料零丟失**。
CREATE TABLE ... LIKE + INSERT ... SELECT 是 MySQL 複製表的**黃金組合**:結構完美克隆、資料精確同步、語法標準、跨版本相容。測試環境克隆、歸檔表建立、Schema 變更預演,皆宜優先採用。大表、線上環境請疊加分批或在線變更工具,做到「複製無感、業務無損」。