批量加載比單條插入快數量級,因避免每條記錄刷新索引。
LOAD DATA:比 INSERT 快;LOAD DATA(服務端直讀)比 LOAD DATA LOCAL(客戶端讀後經網絡傳輸)更快。INSERT INTO t VALUES (...),(...),(...);BEGIN; INSERT INTO t VALUES (...); INSERT INTO t VALUES (...); COMMIT;
LOCK TABLES t WRITE; INSERT INTO t ...; UNLOCK TABLES;
ALTER TABLE t DISABLE KEYS; -- 大量導入 ALTER TABLE t ENABLE KEYS;
# 禁用所有索引 myisamchk --keys-used=0 t # 啟用(n 為位掩碼,如 3 個索引 n=7) myisamchk --recover --quick --keys-used=n t # 確認索引編號 myisamchk --description t
| 場景 | 推薦方案 |
|---|---|
| 初始化大表 | MyISAM: DISABLE KEYS + LOAD DATA |
| 日常增量導入 | 批次 INSERT + 事務 |
| 非事務引擎 | LOCK TABLES + 批次 INSERT |