procedure要执行几个小时啊!看来肯定是你写的有问题

解决方案 »

  1.   

    拿到不是,我觉得是没有优化才是主要的原因,你应该看看是不是update、delete操作都拥到了索引,你的索引是怎么建德,where语句写的是否正确?
      

  2.   

    oracle优化体会:
    1、尽量不要对大表进行update操作
    2、尽量不要使用not in 可使用 select b from a,(select b from bb) where a.b=bb.b(+) and bb.b is null代替
    3、多建临时表
    4、如 tameless(sunny) 所说,分层次汇总,不要每次都从最底层汇总
      

  3.   

    我实际经历是这样的,我的一个过程最早的时候也是对多个大表进行多项统计,之后insert到一个结果表里。最早的时候,是统计完了所有的东西一起insert。速度巨慢,要6、7个小时。后来就将一些特别慢的数据拿出来,单独统计对结果表update。这样效率提高了1/3到1/4。还是不可以忍受。就专门开始优化。用CBO来优化程序,对大表重新analyze。尝试普通索引和位图索引。呵呵,现在的程序不要一个小时。
      

  4.   

    谢谢楼上的各位,我采用了以下方法进行了调整:
    1、建立几张临时表(不是Oracle的temp table),将大表中需要进行统计的部分数据导入该临时表中,procedure中改为对这几张临时表进行操作;
    2、专门对这几张临时表进行索引的优化;
    3、将原来的所有数据做完后提交改为每做完一个阶段提交一次。经过以上处理后,速度提高到1个小时左右。再次谢谢大家!!!
      

  5.   

    另外问一个问题:
    有哪些工具可以对Oracle的性能进行分析和优化呢?哪里可以下载到?谢谢
      

  6.   

    LECCO SQL Expert Pro For Oracle
    这个工具我试用过,不错
    但是我的也只是一个试用版,你找找看吧!
    它根据你select语句利用到CBO等等的东西列出多种写法,
    你自己在众多的写法中测试最有效率的语句。
      

  7.   

    请问:
    "用CBO来优化程序...." 
    中得 CBO 是什么东西啊?:)