这是java开发的时候遇到的一个问题:这是在java程序中的循环取数然后写进txt文件的应用,我在9i中之需要2分钟就能跑完,到10G的时候需要20多分钟,到11G估计要5个小时以上,有高手知道是什么原因吗?把所有的东西放进list然后一次取出来是不行的,所有的表和字段都很多,没有太多的联系,想知道是不是oracle10G以上对大量的进行数据库的查询操作是不是进行了什么限制,大量的resuleset和preparestatement不及时关闭会导致游标超出上限的问题,因此需要频繁的关闭。sql="select userid_ ," + DBFieldName + " from " + dbtablename
+ " where bbq_= \'" + ibbq + "\' and " + DBFieldName
+ " is not null and (" + DBFieldName + " <> 0))";

解决方案 »

  1.   

    理论上讲oracle 版本越往后,性能上是越优化的。 楼主出现这样的问题,建议对SQL 做下执行计划,看它是怎么执行的,为什么需要那么长时间,在相应的关键字段上是否有索引。 关于执行计划,可以参考我的blog:
    Oracle Explain Plan
    http://blog.csdn.net/tianlesoftware/archive/2010/08/20/5827245.aspx------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977(满)
    DBA3 群:63306533;     聊天 群:40132017
      

  2.   

    問題肯定不是Oracle版本引起的,要不Oracle就不用搞那麼多的研發了。
    1. 樓主的機器配置跟不上,跑Oracle11g要比Oracle10g吃掉更多資源,同一台機器,不見得10g就比11g慢,這不是說11g比10g差,只是機器的能力有限。
    2. 樓主還是看看SQL的執行計劃,它會展示SQL運行的花銷。