本帖最后由 knight1208 于 2010-05-06 17:16:59 编辑

解决方案 »

  1.   

    问题补充,我以前优化的几个sp发现parallel不起作用时就把里面的数字调大或者调小,有时就可以起作用了。但上面的第二段查询我换了很多个参数都不起作用。主要对parallel的机制还是不了解。请各位大侠帮帮忙。
      

  2.   

      切记:parallel 并行处理只有在大事务的处理中才能体现效果,才能提升插入效率。
             对于一些小事务的插入,不但不会提升效率,反而会适得其反!
      

  3.   

    你trace一下吧。alter session set "_px_trace"="compilation","execution","messaging"; 
    然后执行你的查询之后 ,再看trc文件。
      

  4.   

    alter table history.tb_stk_cap_chg  parallel;如果还不行,可能是并行太多,资源到达瓶颈导致等待。
      

  5.   

    我问了一个朋友说由于history.tb_stk_cap_chg是分区表,所以用并行反而会降低效率。是不是分区表数据库查询时觉得并行更慢才自动不使用并行查询的?
      

  6.   

    分区表,oracle会按照cbo来进行计算和评估,不管是否有统计信息。所以建议你做一个trace,这个trace的目的就是trace你的parallel情况 ,所以不要你用sql_trace,而是让你用_px_trace