我正在尝试将数据插入到P_TABLE中,这需要花费大量时间〜5-6个小时才能插入。它是与大表连接的简单插入。有什么方法可以减少时间?它是截断和加载过程
我提供了包括解释在内的必要信息。
P_TABLE -- PARTITION ON TEAM
WH_TAB --- Total count = 2222000000
UNIQUE INDEX ON EX_ID,PROD_CD,CAM_CD,SEG_CD,LIST_CD,MAIL_DT
PARTITION BY RANGE (MAIL_DT)
REF_TAB--Total count= 240000000
ACT_TAB --Total count = 31239890
ALTER SESSION ENABLE PARALLEL DML;
INSERT /*+ append */ INTO P_TABLE
(
V_CODE,
CST_ID,
EX_ID,
PROD_CD,
CAM_CD,
SEG_CD,
LIST_CD,
MAIL_DT
)
SELECT
'ABC',
COALESCE(REF.CST_ID, WH.CST_ID),
WH.EX_ID,
PROD_CD,
CAM_CD,
SEG_CD,
LIST_CD,
F.TEAM,
FROM WH_TAB WH
LEFT OUTER JOIN
(
SELECT EX_ID, CST_ID, ACCT_ID, row_number() over(partition by EX_ID order by CST_ID asc) RN
FROM REF_TAB
) REF
LEFT OUTER JOIN ACT_TAB F
on F.CST_ID=REF.CST_ID
ON REF.RN=1 AND REF.EX_ID=WH.EX_ID
WHERE TRUNC(MAIL_DT) >= add_months(TRUNC(sysdate),-13)
AND WH.CAM_CD NOT LIKE 'ORD%';
COMMIT;
答案 0 :(得分:0)
我建议您在没有插入的情况下运行语句的select部分,以确定慢速部分是查询还是插入。
问题很可能是选择,因此表结构(包括索引和说明输出)确实需要多讲。