在oracle 中删除父子关系的表记录
1。用游标查询出所有子记录,循环删除
2。直接delete 语句,后加where 条件那种方法快?谢谢

解决方案 »

  1.   

    不了解你的表数据量、索引等等情况,无从谈起究竟哪个快不过一般而言,如果删除的量不大,而且用简单sql可以实现,就不要用游标
      

  2.   

    最快的删除数据的方法是 trunc table 表。这个是用到删除的数据量大的时候。
    方法:
    1、先将不需要删除的数据复制到一个临时表中
    2、trunc table 表
    3、将不需要删除的数据复制回来。
      

  3.   

    czbbbs() 方法要是用到百万组数据库中,复制的时间就会远长于删除的时间了。你这种方法用在删除大部分数据或要删除的数量较大时还是不错的,比如100万条中删除10万条,比单条删除要快的多。
      

  4.   

    当然是delete快~delete只循环了一次,(去查并删)
    游标循环了二次,(先查出来,再循环一次删)
      

  5.   

    具体问题具体分析呀!
    通常情况下自然用一条语句搞定最好。
    如果你的回滚段太小,一个delete语句删除很大数据量会导致回滚段不够而不断进行扩充或者失败,这是速度就很慢了。这时用游标可以分段提交,对回滚段的要求就小一点,有时反而会更快。
      

  6.   

    据楼主描述,应是直接delete快...
      

  7.   

    两种方法比较,数据量越大 ,delete比游标处理的就越快。