INSERT SELECT UNION ALL to tune (11.2.0.3)
Hi ,
I have this INSERT to tune ( 30 min is not an acceptable time !) , please see attached file for more informations (Execution plan , Active Report and more ...) :
INSERT /*+ APPEND */ INTO PRIM_CONTRACT (NO_CONTRACT, CD_SOURCE_FLOW, CD_FRT_OFFICE_SYS, ID_CONTRACT, TP_VALRISK_CONTRACT, TP_CAT_CONTRACT, DT_TRADE, DT_MATURITY, DT_VALUE, ID_MNA, ID_COLLATERAL_AGREE, ID_STRATEGY , TP_HYPER_CONTRACT, IND_REPORT_PERIMETER, NB_RESID_MATURITY, CD_SGN_GDR_CTPY, CD_GDR_CTPY , NO_PARTITION) WITH RES AS (SELECT /*+ materialize */ * FROM (SELECT CTR.ID_SOFTWARE||CTR.NO_DEAL NO_CONTRACT, 'itg' CD_SOURCE_FLOW, CTR.ID_SOFTWARE CD_FRT_OFFICE_SYS, CTR.NO_DEAL ID_CONTRACT, CTR.LB_INSTRMNT TP_VALRISK_CONTRACT, CTR.LB_INSTRMNT TP_CAT_CONTRACT, CTR.DT_TRD DT_TRADE, CTR.DT_MAT DT_MATURITY, CTR.DT_MAT DT_VALUE, DECODE(SIGN(CTR.NO_MST_AGR),1,CTR.NO_MST_AGR,NULL) ID_MNA, DECODE(SIGN(CTR.NO_COLL_AGR),1,CTR.NO_COLL_AGR,NULL) ID_COLLATERAL_AGREE, CTR.ID_MUREX_STRGY ID_STRATEGY, 'IFT' TP_HYPER_CONTRACT, EXTRACT(YEAR FROM CTR.DT_MAT)-EXTRACT(YEAR FROM :B2 )- (DECODE(SIGN( (EXTRACT(MONTH FROM :B2 )*100+EXTRACT(DAY FROM :B2 )) - (EXTRACT(MONTH FROM CTR.DT_MAT)*100+EXTRACT(DAY FROM CTR.DT_MAT))),1,1,0 )) NB_RESID_MATURITY, PKG_CALCUL.FGETGDRCTPYCOD(CTR.CD_SGN_GDR_CTPY) CD_SGN_GDR_CTPY, PKG_CALCUL.FGETGDRCTPYCOD(CTR.CD_GDR_CTPY ) CD_GDR_CTPY, :B1 PART FROM FRIS_CMD CTR WHERE CTR.NO_PARTITION = :B1 AND CTR.ID_SOFTWARE IS
0