Oracle Insert Into select 非常慢

INSERT/*+APPEND*/INTOEF_EFEE_3_EFEL(EFLE_ID,EFLE_ESCO_ID,EFLE_EFEE_ID,EFLE_EFEL_ID)SE... INSERT /*+ APPEND*/ INTO EF_EFEE_3_EFEL(EFLE_ID,EFLE_ESCO_ID,EFLE_EFEE_ID,EFLE_EFEL_ID)
SELECT SEQ_EF_EFEE_3_EFEL.NEXTVAL,EFEE_ESCO_ID,EFEE_ID,EFEL_ID FROM
(SELECT EFEE.EFEE_ESCO_ID,EFEE.EFEE_ID,EFEL.EFEL_ID FROM EF_EFEP_2_EFEL EFEE
LEFT JOIN EF_ESTIMATE_LARGE EFEL ON EFEL.EFEL_ESCO_ID = EFEE.EFEE_ESCO_ID
AND EFEL.EFEL_SEGMENT2 = EFEE.EFEE_DEPT_SEG_CODE
AND EFEL.EFEL_SEGMENT3 = EFEE.EFEE_EBCG_CODE
AND EFEL.EFEL_SEGMENT4 = EFEE.EFEE_EBSC_CODE
AND EFEL.EFEL_SEGMENT5 = EFEE.EFEE_EBCU_CDH_CODE
AND EFEL.EFEL_SEGMENT6 = EFEE.EFEE_EBOT_CODE
AND EFEL.EFEL_SEGMENT7 = EFEE.EFEE_EBPJ_PROJECT_CODE
AND EFEL.EFEL_ATTRIBUTE2 = EFEE.EFEE_DP_NUMBER
AND EFEL.EFEL_SUBSTR3 = EFEE.EFEE_IS_RP
AND EFEL.EFEL_REFERENCE_2 =
(case when EFEE.EFEE_IS_RP = 1 THEN EFEE.EFEE_EBCU_CDH_ACODE
when EFEE.EFEE_IS_RP = -1 THEN EFEE.EFEE_EBCU_CDH_SCODE end)
WHERE EFEE.EFEE_ESCO_ID = 5012001
AND EFEE.EFEE_EBAP_CODE = 'Aug-2013'
AND EFEE.EFEE_EFEL_ID IS NULL)
EFLE where EFLE.EFEL_ID IS NOT NULL
展开
 我来答
198901245631
2013-11-01 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1723万
展开全部
给条件的字段加上索引能提高这个查询效率,如EFEE_ESCO_ID,EFEE_EBAP_CODE。
这样的批处理问题,如果数据量比较大的情况下,考虑创建分区也行,数据量不是很大的话,直接加索引就行,
limintjhn2012
2013-10-26
知道答主
回答量:9
采纳率:0%
帮助的人:8.1万
展开全部
1)估计性能瓶颈在两张表的连接上,这个要靠你自己优化了
2)考虑加nologging(append与nologging联用才有效果)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0319a0e
2013-10-26 · TA获得超过2.2万个赞
知道小有建树答主
回答量:2080
采纳率:85%
帮助的人:1150万
展开全部
自己优化写SQL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式