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() 只是简单的判断时间是否超出当前时间。
求教!!!!!!!!!!! 展开
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() 只是简单的判断时间是否超出当前时间。
求教!!!!!!!!!!! 展开
3个回答
展开全部
没跑完的话, 就要查一下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里重做日志的状态,应该可以找到问题点的
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里重做日志的状态,应该可以找到问题点的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您的描述不够完善,可以给我看一下你的执行计划吗?(截个图)
您外 , 想问一下您是做开发,还是DBA。
问这个问题的目的是看你应该从哪个方向解决。 权限不同, 负责的内容也不同。某些职位对于performance tuning是不从SQL入手的。
如果您只能从SQL 那么局限性就比较大。
不管怎样入手, 您能先给我看下执行计划么?
您外 , 想问一下您是做开发,还是DBA。
问这个问题的目的是看你应该从哪个方向解决。 权限不同, 负责的内容也不同。某些职位对于performance tuning是不从SQL入手的。
如果您只能从SQL 那么局限性就比较大。
不管怎样入手, 您能先给我看下执行计划么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看你的存储过程中在这条语句之前还有其他的语句吗? 既然你说窗口中执行很快,我想是不是这个语句执行的前置条件有差异?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询