+ -
当前位置:首页 → 问答吧 → jdbc 预编译 Oracle 熟悉结构查询(connect) 卡死问题

jdbc 预编译 Oracle 熟悉结构查询(connect) 卡死问题

时间:2011-08-09

来源:互联网

各位大虾,小弟遇一难题,在查询Oracle树形结构(connect)时,用jdbc预编译PreparedStatement查询时,老是卡住,已经遇到过多次了,是不是jdbc的预编译对复杂点的connect by语句不能应用索引?帖段代码讲解下吧:

sql:SQL code

select *
  from (select /*+leading(cpcbom,cpcbomd,cpcitem) index(cpcitem,pk_cpcitem)*/level le
          from cpcbom, cpcbomd, cpcitem
         where cpcbom.bomid = cpcbomd.bomid
           and cpcbom.invorgid = cpcbomd.invorgid
           and cpcitem.itemid = cpcbomd.itemid
            and cpcbom.bomviewid=0
            and cpcbom.bomviewaltsuid=0
           and cpcitem.itemcode = ?
         start with cpcbom.asmid = ?
                and cpcbomd.invorgid = ?
        connect by cpcbom.asmid = prior cpcbomd.itemid) t
 where t.le <> 1;


执行计划没问题,我将值填写到里面,第一次运行也就2秒多,而且执行计划也正确,但使用jdbc预编译查询,十多分钟都没结果,用pl/sql查看session,一直卡在数据库中,估计是全表扫描了,注释下,cpcitem\cpcbomd表加起来估计有两千万的数据。

使用statement则不会出现该情况

若直接写connect 语句,外面不加一层,不写复杂点的,是不会卡死的,为啥呢?

作者: VSlogin   发布时间: 2011-08-09

估计可以给oracle提BUG了。。。。。

作者: soli11722984   发布时间: 2011-08-09

呵呵。楼上哥们说得太好了

作者: LMAOhuaNL   发布时间: 2011-08-09

热门下载

更多