由于项目运行了好几年,数据库中的日志表的数据量比较大,如果使用常规的删除语句进行删除的话,需要很长的时间,并且不一定能删除掉。
TRUNCATE TABLE 表
使用TRUNCATE TABLE时需要注意,以下表不能使用TRUNCATE TABLE:
1、由 FOREIGN KEY 约束引用的表。
2、参与索引视图的表。
3、通过使用事务复制或合并复制发布的表
1、创建 与”sys_log“表结构一样的临时表sys_log_old
CREATE TABLE sys_log_old SELECT * FROM sys_log WHERE 1=2;
2、把表(sys_log)中的部分数据,保存到临时表(sys_log_old)中
INSERT INTO sys_log_old SELECT * FROM sys_log WHERE sys_log.create_time > '2022-08-01 00:00:01'
3、清空日志表( sys_log)
TRUNCATE TABLE sys_log;
4、删除日志表
drop table sys_log
5、把临时表(sys_log_old)更改成日志表(sys_log)
rename table sys_log_old to sys_log
以上方式,对于数据达到千万以上的日志表处理会达到一个非常满意的效果