分区解决问题(就不需要delete操作)
alter table t_name drop partition p_name;
alter table t_name truncate partition p_name;
这样对于几个GB的 数据的分区来说,执行时间只有大概10秒,用delete那就不指定。
用delete存在弊端
(1) 消耗大量的系统资源
(2)无法释放空间
alter sessionn set sql_trace=true;
alter session set sql_trace=false;
对表进行分析
set autotrace trace exp stat ;
select count(*) from user_extents where setment_name='p_part';(delete 没有释放资源,计算删除了也只能自己用,truncate 可以释放掉一半)
如果有许多碎片,可以通过重新整理表空间来达到,释放空间的目的。
alter table t move
alter table t_name drop partition p_name;
alter table t_name truncate partition p_name;
这样对于几个GB的 数据的分区来说,执行时间只有大概10秒,用delete那就不指定。
用delete存在弊端
(1) 消耗大量的系统资源
(2)无法释放空间
alter sessionn set sql_trace=true;
alter session set sql_trace=false;
对表进行分析
set autotrace trace exp stat ;
select count(*) from user_extents where setment_name='p_part';(delete 没有释放资源,计算删除了也只能自己用,truncate 可以释放掉一半)
如果有许多碎片,可以通过重新整理表空间来达到,释放空间的目的。
alter table t move