oracle 存储过程执行insert 语句 效率很慢!!!

我调试到insertintot_d8_inspector_key_column(DQDM,YLJGDM,JYRQ,TABLE_NAME,COLUMN_NAME,ALL_N... 我调试到
insert into t_d8_inspector_key_column(
DQDM, YLJGDM, JYRQ,TABLE_NAME, COLUMN_NAME, ALL_NUM, ERROR_NUM, FLG)
select c.QXDM, YLJGDM, '20140116', 'TB_CIS_Prescription_Detail', 'KFRQ'
, count(1)
, sum(case when IS_XY_getdate(KFRQ)=1 then 1 else 0 end)
, '5039'
from CEN_SEND.TB_CIS_Prescription_Detail a
inner join (
select distinct DMXDMZ, QXDM
from TB_DIC_Constant) c
on a.YLJGDM = c.DMXDMZ
group by c.QXDM, YLJGDM
这条语句的时候 跑了很久 没跑完。
但是 我把这条语句在 窗口中执行 只用了0.06
TB_DIC_Constant 13 条记录
TB_CIS_Prescription_Detail 924392 条记录
IS_XY_getdate() 只是简单的判断时间是否超出当前时间。
求教!!!!!!!!!!!
展开
 我来答
后盐无齿
推荐于2016-10-09 · TA获得超过603个赞
知道小有建树答主
回答量:378
采纳率:50%
帮助的人:142万
展开全部
没跑完的话, 就要查一下t_d8_inspector_key_column表上是否有锁。

select c.QXDM, YLJGDM, '20140116', 'TB_CIS_Prescription_Detail', 'KFRQ' , count(1) , sum(case when IS_XY_getdate(KFRQ)=1 then 1 else 0 end) , '5039'from CEN_SEND.TB_CIS_Prescription_Detail ainner join ( select distinct DMXDMZ, QXDM from TB_DIC_Constant) c on a.YLJGDM = c.DMXDMZgroup by c.QXDM, YLJGDM;
执行速度快不快, 看一下要插入多少笔数据。

以上确认是查询问题,还是插入问题。
同时再看看数据库undo表空间,和v$log里重做日志的状态,应该可以找到问题点的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
choikyo
2014-01-17 · TA获得超过5455个赞
知道小有建树答主
回答量:668
采纳率:0%
帮助的人:575万
展开全部
您的描述不够完善,可以给我看一下你的执行计划吗?(截个图)

您外 , 想问一下您是做开发,还是DBA。
问这个问题的目的是看你应该从哪个方向解决。 权限不同, 负责的内容也不同。某些职位对于performance tuning是不从SQL入手的。

如果您只能从SQL 那么局限性就比较大。

不管怎样入手, 您能先给我看下执行计划么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人生流水账
2014-01-16
知道答主
回答量:5
采纳率:0%
帮助的人:2.9万
展开全部
看看你的存储过程中在这条语句之前还有其他的语句吗? 既然你说窗口中执行很快,我想是不是这个语句执行的前置条件有差异?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式