解决方案 »

  1.   

    delete后
    alter table ... shrink space 
      

  2.   

    delete 太慢了.. 长期使用时间字段比较的话 还是加索引好点 在夜深人静的时候 
    create table tb1 select * from tbb where tdate > ''
    delete .. tbb
    tb1 改为 tbb
      

  3.   

    1)获取匹配的ROWID列表,可用parallel这个hint提高查询速度
    2)把ROWID排序并分组(例如分为16组),可以用NTILE函数分组
    3)创建多个JOB(例如16个JOB),根据ROWID分别并行删除对应的组的数据。3800W行大概耗时2-3个小时,当然这和磁盘性能有关。3800W数据不算多了,我们每周要删除3亿行数据,因为原有表结构设计的问题,所以用上述方法。
    关于释放表空间的问题,如果目标表在不断插入数据,那么可以暂时不考虑,因为会重用被删除的数据的空间。
      

  4.   

    1、 create  a new table 
    2、 insert 
    3、 rename --0.01s at most