## 因为表数据过大(大约2亿数据),需要先查询三个月之前的id节点,增加查询速度 select MAX(id) from other_log_info where DATE_FORMAT(createtime,'%Y-%m-%d') = DATE_SUB(CURDATE(),INTERVAL 3 MONTH);
## 查询的sql一次不能删除太多数据,防止锁表 select * from other_log_info where id < (select MAX(id) from other_log_info where DATE_FORMAT(createtime,'%Y-%m-%d') = DATE_SUB(CURDATE(),INTERVAL 3 MONTH)) LIMIT 0,1000
## 由于delete不能直接删除子查询表中的数据,必须用过嵌套一层的方式来解决 ## 第二种执行方式,如果对于sql比较熟悉,可以用存储过程的"游标"进行循环 DELETE FROM other_log_info where id in (select t2.id from (select id from other_log_info where id < (select MAX(id) from other_log_info where createtime < DATE_SUB(CURDATE(),INTERVAL 3 MONTH)) LIMIT 0,1000) t2)