DROP INDEX,導入後 CREATE INDEX (MyISAM 極顯著,InnoDB 5.7+ 也有效)。COMMIT 一次,平衡 Redo Log 刷盤與鎖持有時間。LOCK TABLES tbl WRITE 可消除並發衝突,整體提速 ~40% (官方基準)。-- 多值單語句 (最高效)
INSERT INTO tbl (a,b) VALUES (1,2),(3,4),(5,6)...;
-- SET 語法
INSERT INTO tbl SET a=1, b=2, c=3;
-- SELECT 導入
INSERT INTO tbl (a,b) SELECT a,b FROM src_tbl;
INSERT DELAYED ... SELECTON DUPLICATE KEY UPDATELAST_INSERT_ID()適用:日誌、統計、非關鍵資料,寫入峰值平滑。
LOAD DATA INFILE '/path/file.txt'
INTO TABLE tbl
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
(a,b,c);
key_buffer_size (MyISAM) / innodb_buffer_pool_size (InnoDB) 調大,速度比 INSERT 快 **10-20 倍**。FILE 權限,受 secure_file_priv 限制。SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
-- 大量 INSERT/LOAD DATA
SET foreign_key_checks=1;
SET unique_checks=1;
COMMIT;
innodb_flush_log_at_trx_commit=2 臨時調整 (風險:崩潰丟 1 秒資料)。innodb_log_file_size 調大 (如 1GB) 減少 Checkpoint 壓力。SET SESSION sql_log_bin=0 (非主庫) 避免 Binlog 膨脹。ANALYZE TABLE 更新統計資訊。大量插入優化核心三板斧:**LOAD DATA INFILE > 批次多值 INSERT > INSERT DELAYED**。InnoDB 場景配合關閉檢查、調大 Log Buffer、批次提交,可達到每秒百萬行寫入量級。切記:生產環境必須先在預發驗證資料完整性與回滾預案。