ORACLE 9i

解决方案 »

  1.   

    不会吧,dele后,如果没有commit;则在内存中缓存,再truncate,直接删除,不可rollback,则前面的缓存没有清除,清除一下,应该可以
      

  2.   

    知道了一半如果COMMIT了呢? 我需要处理多个批次之后,才能清除接口表,每个批次,如果再一开始就把无效数据DELE之后,能够减少很多条件子句,提高不少速度所以,很关心这种做法能不能长久运行下去,也就是说,不产生存储垃圾
      

  3.   

    truncate能够快速清除所有数据,不管里边有没有,不会有问题吧
      

  4.   

    为什么不直接truncate呀,为什么要先delete 呀
      

  5.   

    delete与truncate都是把表的的数据清空.但它们是有区别的.DELETE 把数据清除后可以rollback,但TRUNCATE不可ROLLBACK.
    DELETE 是属DML ,TRUNCATE是DDL.
    DELETE 删除数据后不会回收空间,即如果原来的table已占了10M,你删除了2M的记录,这个表公然还是占10M. TRUNCATE在清空数据后可以回收空间,即 high water 会降下来.
    TRUNCATE不激活任何DELETE TRIGGER.PS:
     在你用delete清除记录后,可以用
     alter table table_name deallocate unused;来回收没用的空间.