MySQL大DML操作建議
㈠ 大數據量INSERT
⑴ 使用多行插入代替單行:
insert into t values (),(),(),...
⑵
LOAD DATA INFILE ... INTO TABLE t
⑶ 寫入臨時表、在 INSERT … SELECT
⑷ 取消索引、約束,等數據加載完後在重建
⑸ INSERT時指定DELAYED屬性
⑹ 對於InnoDB、可以分散INSERT到多個事務、批量提交
㈡ 大數據量UPDATE
這之前也應該disable掉索引和相關約束
① SELECT 唯一字段,變更字段
② 把結果集寫入臨時表
③ 為臨時表創建復合索引
④ 循環臨時表的每條記錄
⑤ 依據臨時表的唯一字段、更新目標表的變更字段
㈢ 大數據量DELETE
① 分區表
② 先把需要刪除的數據的唯一標識取到臨時表、遊標循環批量delete