boss某天发现一张表占用磁盘内存特别大,要求清理历史数据,只保留一个月的。十亿多条数据。
蹩脚的方案。
# 复制一张新表
CREATE TABLE table SELECT * FROM table WHERE 1=2;
# 备份需要的数据
INSERT INTO table_old SELECT * FROM table cr WHERE cr.date > "2021-02-28 00:00:00";
# 清除table表的数据
TRUNCATE TABLE table;
# 将保留的数据写回原表
INSERT INTO table SELECT * FROM table_old;