这个问题开始发在了Java区, 后来听说比较接近数据库部分, 我也不是很懂, 请教下大神功能是这样:对数据库做查询并且遍历结果集,将取出的结果集写入一个文件里现在的问题是,遍历结果集的时候速度不稳定,有时候几十万条也只要不到1分钟,有时候几十条数据可能就需要五六分钟经过多次测试,发现取结果集的操作容易卡在某几条记录上,也就是说大部分过程都很流畅,但在某几个点会卡很久,至少也要四五秒,这样累计下来就大大影响了效率而且这种卡住跟数据是无关的,仅与结果集的第X条有关举个例子,一条SQL查询出的记录总数是1291条,在取结果集的时候很明显卡在了226条和1270条这两个地方
总共花费约10秒,这两个地方分别就花费了4-5秒
在删除卡住位置的记录之后,重试,仍然会卡在这两个地方功能实现是用JDBC实现的, 但用SQLPlus取结果集仍然出现同样情况, 表明不太可能是程序问题对数据库部分所知甚少, 暂时也找不到相关资料,请问有没有办法解决,或者解释下问题出现的原因?

解决方案 »

  1.   


    同一条SQL语句反复测试都是同样的问题,卡在同样的位置,不像是被锁住
    SELECT
    T7.LAST_NAME,
    T3.LAST_NAME ZLAST_NAME,
    T6.NAME,
    DECODE(T7.SEX_MF, 'M', '男', 'F', '女', '99', '未知') SEX_MF
    FROM 
           SIEBEL.CX_ZTZY_KZ_TBL T1,
           SIEBEL.CX_QD_PMH T2,
           SIEBEL.S_CONTACT T3,
           SIEBEL.S_POSTN T4,
           SIEBEL.S_PARTY_RPT_REL T5,
           SIEBEL.S_ORG_EXT T6,
           SIEBEL.ZH_KHZH_BPH_TBL T7
       WHERE 
          T4.PR_EMP_ID = T3.ROW_ID (+) AND
          T7.BU_ID = T6.ROW_ID (+) AND
          T7.PR_POSTN_ID = T4.ROW_ID (+) AND
          T1.QD_ID = T2.CHANNEL_ID AND
          T1.ORG_ID = T5.SUB_PARTY_ID AND
          T7.RES_ID = T1.RES_ID AND
          (T5.PARTY_ID = '0-R9NH' AND T2.PCHANNEL_ID = '01')
      

  2.   

    select只是持有共享锁,造成这种原因很难说,方便把执行计划贴出来吗?
      

  3.   

    1.改变语句逻辑
    2.bitmap看似建立的不合理,换成b-tree试试