求oracle 查询调用存储过程非常慢的解决方案,高手赐教

jkan5522 jkan5522 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
gettransacttime 内部函数
执行里面的查询,执行起来2秒
select oprt.F_ID, oprt.f_dispatchdate,
gettransacttime (oprt.f_dispatchdate,TO_DATE ('2009-5-5 17:14:02','YYYY-MM-DD HH24:MI:SS')) Beginusetime, --得到案件到目前为止处理的时间(分)
( NVL (oprt.f_timelimit, 0) * 60 + NVL (oprt.f_timeslowminute, 0) + NVL (oprt.f_timelapseminute, 0) ) f_timelimit --总共处理分钟数
from oprt_s_main oprt where oprt.f_moveend IN (SELECT f_code
FROM sys_s_state sta WHERE sta.f_node IN (6))


当嵌套后,执行起来将近40秒
select F_ID,f_dispatchdate,Beginusetime,f_timelimit from
(
select oprt.F_ID, oprt.f_dispatchdate,
gettransacttime (oprt.f_dispatchdate,TO_DATE ('2009-5-5 17:14:02','YYYY-MM-DD HH24:MI:SS')) Beginusetime, --得到案件到目前为止处理的时间(分)
( NVL (oprt.f_timelimit, 0) * 60 + NVL (oprt.f_timeslowminute, 0) + NVL (oprt.f_timelapseminute, 0) ) f_timelimit --总共处理分钟数
from oprt_s_main oprt where oprt.f_moveend IN (SELECT f_code
FROM sys_s_state sta WHERE sta.f_node IN (6))
) t where f_timelimit between Beginusetime and (Beginusetime + 120 )


去除where条件,执行起来2秒

select F_ID,f_dispatchdate,Beginusetime,f_timelimit from
(
select oprt.F_ID, oprt.f_dispatchdate,
gettransacttime (oprt.f_dispatchdate,TO_DATE ('2009-5-5 17:14:02','YYYY-MM-DD HH24:MI:SS')) Beginusetime, --得到案件到目前为止处理的时间(分)
( NVL (oprt.f_timelimit, 0) * 60 + NVL (oprt.f_timeslowminute, 0) + NVL (oprt.f_timelapseminute, 0) ) f_timelimit --总共处理分钟数
from oprt_s_main oprt where oprt.f_moveend IN (SELECT f_code
FROM sys_s_state sta WHERE sta.f_node IN (6))
) t

将内部函数gettransacttime 去掉,改成下面这样,执行起来2秒
select F_ID,f_dispatchdate,Beginusetime,f_timelimit from
(
select oprt.F_ID, oprt.f_dispatchdate,
10 Beginusetime, --得到案件到目前为止处理的时间(分)
( NVL (oprt.f_timelimit, 0) * 60 + NVL (oprt.f_timeslowminute, 0) + NVL (oprt.f_timelapseminute, 0) ) f_timelimit --总共处理分钟数
from oprt_s_main oprt where oprt.f_moveend IN (SELECT f_code
FROM sys_s_state sta WHERE sta.f_node IN (6))
) t where f_timelimit between Beginusetime and (Beginusetime + 120 )



希望高手多多指教,这个问题困扰小弟一个下午了,小弟在此先谢过,虽然找出个大概原因,但不知道如何解决
...全文

相关推荐

Oracle存储过程及调用

Oracle存储过程语法 Oracle的存储过程语法如下: create procedure 存储过程名称(随便取) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end; (2)带参数的存储过程语法: create procedure 存储过程名称(随便取) (变量1 数据类型,变量2 数据类型,...,变量n 数据类型) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end; (3)带输入、输出参数的存储过程语法: create procedure

weixin_38708223

关于oracle中clob字段查询慢的问题及解决方法

最近在用oracle的过程中用到了对blob字段模糊查询的问题。接下来通过本文给大家分享关于oracle中clob字段查询慢的问题及解决方法,需要的的朋友参考下吧

weixin_38696143

C#调用oracle方法(包括调用存储过程)

详细的记录了C#如何调用oracle以及带有存储过程输出变量的方法,适合初学者。

lifan185

oracle函数调用存储过程

oracle函数调用存储过程.doc

奋斗之际

Spring boot调用Oracle存储过程的两种方式及完整代码

主要给大家介绍了关于Spring boot调用Oracle存储过程的两种方式及完整代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

weixin_38600341
评论 5
收藏 已收藏
分享
返回顶部
jkan5522
Oracle 17,133 成员 55,258 内容