如果有一张表有上千万条数据,需要清空这个表的数据,你会怎么解决?
如果用delete,会卡上半天时间,不可行。需要用truncate table去解决,如下:
1、先创建一个备份表
create table 备份表 as
select * from 千万条数据的表
2、清空数据
truncate table 千万条数据的表
3、如果需要保留部分数据
insert into 千万条数据的表 select * from 备份表 where ......
4、删除临时表
drop table 备份表
完成。
TRUNCATE TABLE 是一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。