jdbc 预编译 Oracle 熟悉结构查询(connect) 卡死问题
时间:2011-08-09
来源:互联网
各位大虾,小弟遇一难题,在查询Oracle树形结构(connect)时,用jdbc预编译PreparedStatement查询时,老是卡住,已经遇到过多次了,是不是jdbc的预编译对复杂点的connect by语句不能应用索引?帖段代码讲解下吧:
sql:SQL code
执行计划没问题,我将值填写到里面,第一次运行也就2秒多,而且执行计划也正确,但使用jdbc预编译查询,十多分钟都没结果,用pl/sql查看session,一直卡在数据库中,估计是全表扫描了,注释下,cpcitem\cpcbomd表加起来估计有两千万的数据。
使用statement则不会出现该情况
若直接写connect 语句,外面不加一层,不写复杂点的,是不会卡死的,为啥呢?
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28