如果不带条件可以使用TRUNCATE来删除
如果象你的问题,也只能在field1建立索引了

解决方案 »

  1.   

    支持 LGQDUCKY(飘) ( ) 的说法
      

  2.   

    除了加索引外,
    你可以删除时加NO LOGGING选项,不写日志加快删除速度
      

  3.   

    呵呵,不好优化,其实此处的索引在删除记录的时候会影响性能的,既然是从几千万条记录中删除几百万条,如果在field1上建了索引,那就先把索引取消掉再删除吧。btw:几千万条记录的表都不分区,明显有问题嘛。Oracle的技术支持工程师建议,2,000,000条以上记录的表,应该考虑分区,你完全可以按照时间为维度来建表,每个月的数据存放在一个分区表中,以后要删除一个月的数据,直接truncate table即可,不记录日志,速度很快。
      

  4.   

    可以加上no logging字句,这样会稍微快点,但不会很多,最好在指定的列上加上索引
      

  5.   

    sqlplus下
    truncate table table_name;
      

  6.   

    libin_ftsafe(子陌红尘)说的有道理,是应该分区.
      

  7.   

    1,按libin_ftsafe所说分区,对分区操作。
    2,如果你的 field1很不适合作为分区键,或从逻辑上分区困难的话
     至少在你删除时每1000条左右提交一下事务,减少回滚段的争用(速度也会快一些)。另:提醒一下,这么大数据量的删除结束后,别忘记把索引rebuild一下噢。
      DELETE就是慢.呵呵