ok les pongo el query, tengo poco tiempo con oracle pero lo que sigo soin entender por que si la consulto la visualizo muy rapido por que el insert tarda tanto, espero que alguien me pueda orientar un poco.
saludos.
INSERT INTO REP_EMI_CONSOLIDADO
SELECT
CVE_SUBRAMO, SUBRAMO,MOVIMIENTO, F_INICIO_VIG, F_FIN_VIG,PCT_COMISION, PCT_ADMON, PCT_ADQUI, PCT_UTILIDAD, PCT_DESCTO_VOL,
FORMA_PAGO, NUM_AGENTE,Tipo_Agente, Prima_Cobro,RAZON_SOCIAL,CONTRATANTE,IMP_PN_BON, IMP_DEREMIS_TOT, FH_EMISION,
IMP_RCGO_FPAGO, IMP_IVA, IMP_PT, IMP_COMIS_BON_PN,IMP_COMIS_PF,IMP_COMIS_PM,POLIZA, num_endoso,COBERTURA,PRODUCTO,
ID_UNIDAD_NEGOCIO,ID_EMISOR,ID_COTIZACION,ID_RENOVACION, ID_SOL_ENDOSO,F_INICIO_VIG_POL, F_FIN_VIG_POL, FH_EMISION_POL,
F_INICIO_VIG_END, F_FIN_VIG_END, FH_EMISION_END,FH_EMISION_DOCTO, MES_EMISION,PPLAN, NUMASEG,TIPO_EMISION, NUM_RECIBO,
F_INI_COB_REC, NOMBRE, A_PATERNO, A_MATERNO, F_NACIMIENTO, GENERO,PARENTESCO,CODIGO_POSTAL , CVE_EDO_CIVIL, ID_EMPLEADO,
0 TITULARES, 0 DEPENDIENTES, GTOS_ADMON, GTOS_ADQUI, GTOS_UTILIDAD, PRIMA_RIESGO,ID_INCISO,NOM_EJECUTIVO,POLIZA_AGRP, pct_rcgo_fpago, tipo_movimiento
FROM (
SELECT /*+ index (cont pk_emi_contratante) index(DETCON pk_con_det_concepto) index(pol pk_emi_poliza) index(pro pk_pro_producto) index(agte pk_ae_agente) index(pfp pk_pro_forma_pago) */
'1' tipo_movimiento, DETCON.CLAVE_DET_CONCEPTO AS CVE_SUBRAMO, DETCON.DET_CONCEPTO AS SUBRAMO,'POLIZA' AS MOVIMIENTO,
TO_CHAR(POL.F_INICIO_VIG,'DD/MM/YYYY')F_INICIO_VIG, TO_CHAR(POL.F_FIN_VIG,'DD/MM/YYYY')F_FIN_VIG,
POL.ID_UNIDAD_NEGOCIO,POL.ID_EMISOR,POL.ID_COTIZACION,POL.ID_RENOVACION, 0 ID_SOL_ENDOSO,
POL.PCT_COMISION, POL.PCT_ADMON, POL.PCT_ADQUI, POL.PCT_UTILIDAD, POL.PCT_DESCTO_VOL,
PFP.FORMA_PAGO FORMA_PAGO, AGTE.NUM_AGENTE NUM_AGENTE,
DECODE(AGTE.CVE_TIPO_AGENTE, 'TA_PRO', 'MORAL ', 'FÍSICA')TIPO_AGENTE,
case when REC.CVE_ORIGEN_RECIBO in ('CO_POL', 'CO_END') then DECODE(REC.FOLIO, 1, DESG.IMP_PN_BON,0) else 0 end Prima_Cobro,
PERCONT.RAZON_SOCIAL,PERCONT.RAZON_SOCIAL CONTRATANTE,
DESG.IMP_PN_BON, DESG.IMP_DEREMIS_TOT,TO_CHAR(POL.FH_EMISION,'YYYY/MM/DD') FH_EMISION,
DESG.IMP_RCGO_FPAGO, DESG.IMP_IVA, DESG.IMP_PT, DESG.IMP_COMIS_BON_PN,
PKG_REPORTES.FNC_COMIS_AGTE(POL.ID_AGENTE, DESG.IMP_COMIS_BON_PN, 'F') IMP_COMIS_PF,
PKG_REPORTES.FNC_COMIS_AGTE(POL.ID_AGENTE, DESG.IMP_COMIS_BON_PN, 'M') IMP_COMIS_PM,
POL.NUM_POLIZA || '-' || POL.ID_RENOVACION AS POLIZA,'0000000100000000' num_endoso,
CASE WHEN DECODE(INSTR(UPPER(PRO.PRODUCTO), 'DENTAL'), 0, 0, 1) = 1 THEN 'DENTAL'
WHEN DECODE(INSTR(UPPER(PRO.PRODUCTO), 'VISION'), 0, 0, 1) = 1 THEN 'VISION'
ELSE 'ERROR EN PRODUCTO' END COBERTURA,PRO.PRODUCTO,
TO_CHAR(POL.F_INICIO_VIG,'DD/MM/YYYY') F_INICIO_VIG_POL,TO_CHAR(POL.F_FIN_VIG,'DD/MM/YYYY') F_FIN_VIG_POL, TO_CHAR(POL.FH_EMISION,'DD/MM/YYYY') FH_EMISION_POL,
'0' F_INICIO_VIG_END,'0' F_FIN_VIG_END, '0' FH_EMISION_END,
TO_CHAR(POL.FH_EMISION,'DD/MM/YYYY') FH_EMISION_DOCTO,
to_char(POL.FH_EMISION,'YYYYMM') MES_EMISION,
substr(pkg_funciones.regresa_plan_inciso(pol.id_unidad_negocio,pol.id_emisor,pol.id_cotizacion,pol.id_renovacion,inc.id_inciso,pol.id_producto,pol.id_version),1,100) PPLAN,
substr(pkg_funciones.REGRESA_NUMASEG_DOC(pol.id_unidad_negocio,pol.id_emisor,pol.id_cotizacion,pol.id_renovacion,0,'POL'),1,100) NUMASEG,
case when to_char(to_number(pol.id_cotizacion))=pol.num_folio_sol then 'Póliza Nueva' Else pol.num_folio_sol end TIPO_EMISION,
REC.NUM_RECIBO,REC.F_INICIO_COBERTURA AS F_INI_COB_REC, INC.NOMBRE, INC.A_PATERNO, INC.A_MATERNO, INC.F_NACIMIENTO,
DECODE(INC.CVE_GENERO,'SX_MAS','MASCULINO','SX_FEM','FEMENINO') GENERO,
DECODE(INC.CVE_PARENTESCO,'CP_ABU','ABUELO','CP_CON','CONYUGE','CP_HER','HERMANO(A)','CP_HIJ','HIJO(A)','CP_OTR','OTRO','CP_PAD','PADRE(MADRE)','CP_SUE','SUEGRO(A)','CP_TIT','TITULAR','ERROR') PARENTESCO,
INC.CODIGO_POSTAL , INC.CVE_EDO_CIVIL, INC.ID_EMPLEADO,INC.ID_INCISO,
(DESG.IMP_PN_BON * POL.PCT_ADMON) as GTOS_ADMON, (DESG.IMP_PN_BON * POL.PCT_ADQUI) AS GTOS_ADQUI,
(DESG.IMP_PN_BON * POL.PCT_UTILIDAD) AS GTOS_UTILIDAD ,
(DESG.IMP_PN_BON-(DESG.IMP_PN_BON * POL.PCT_ADMON)-(DESG.IMP_PN_BON * POL.PCT_ADQUI)-(DESG.IMP_PN_BON * POL.PCT_UTILIDAD)) AS PRIMA_RIESGO,
POL.NOM_EJECUTIVO ,'000' POLIZA_AGRP ,pol.pct_rcgo_fpago
FROM EMI_RECIBO_DESGLOSADO DESG, EMI_RECIBO REC, EMI_POLIZA POL, EMI_PERSONA PERCONT,EMI_INCISO INC,EMI_CONTRATANTE CONT,
PRO_PRODUCTO PRO, AE_AGENTE AGTE, PRO_FORMA_PAGO PFP, CON_DET_CONCEPTO DETCON
WHERE REC.CVE_ORIGEN_RECIBO = 'CO_POL'
AND REC.CVE_TIPO_RECIBO ='CTR_RN'
AND REC.ID_SOL_ENDOSO IS NULL
AND REC.NUM_RECIBO = DESG.NUM_RECIBO
AND REC.ID_VERSION_RECIBO = DESG.ID_VERSION_RECIBO
AND DESG.ID_VERSION_RECIBO = PKG_FUNCIONES.STP_CON_AJUSTE(rec.num_recibo,to_date('31/01/2010'))
AND REC.ID_UNIDAD_NEGOCIO = POL.ID_UNIDAD_NEGOCIO
AND REC.ID_EMISOR = POL.ID_EMISOR
AND REC.ID_COTIZACION = POL.ID_COTIZACION
AND REC.ID_RENOVACION = POL.ID_RENOVACION
AND POL.ID_CONTRATANTE = CONT.ID_CONTRATANTE
AND POL.ID_UNIDAD_NEGOCIO = PERCONT.ID_UNIDAD_NEGOCIO(+)
AND POL.ID_EMISOR = PERCONT.ID_EMISOR(+)
AND POL.ID_COTIZACION = PERCONT.ID_COTIZACION(+)
AND POL.ID_RENOVACION = PERCONT.ID_RENOVACION(+)
AND (CONT.ID_PERSONA = PERCONT.ID_PERSONA OR PERCONT.ID_PERSONA IS NULL)
AND DESG.ID_CONCEPTO = DETCON.ID_CONCEPTO
AND DESG.ID_DET_CONCEPTO = DETCON.ID_DET_CONCEPTO
AND INC.ID_UNIDAD_NEGOCIO = DESG.ID_UNIDAD_NEGOCIO
AND INC.ID_EMISOR= DESG.ID_EMISOR
AND INC.ID_COTIZACION = DESG.ID_COTIZACION
AND INC.ID_RENOVACION = DESG.ID_RENOVACION
AND INC.ID_INCISO = DESG.ID_INCISO
AND POL.ID_AGENTE = AGTE.ID_AGENTE
AND PRO.ID_UNIDAD_NEGOCIO=POL.ID_UNIDAD_NEGOCIO
AND PRO.ID_PRODUCTO=POL.ID_PRODUCTO
and pro.id_moneda = pol.id_moneda
AND POL.ID_FORMA_PAGO = PFP.ID_FORMA_PAGO
AND TRUNC(POL.FH_EMISION) BETWEEN to_date('01/01/2010') AND to_date('31/01/2010')
AND POL.CVE_TIPO_POLIZA = 'TP_PE'
)
--------------aca pongo mi plan de ejecucion.------------------------------------
Statement Id=12 Type=INSERT STATEMENT Cost=14174 TimeStamp=10-MAR-10::09:26:57
2.1 FILTER
3.1 NESTED LOOPS
4.2 TABLE ACCESS(BY INDEX ROWID) - EMI_INCISO
5.1 INDEX(UNIQUE SCAN) - PK_EMI_INCISO(UNIQUE)
4.1 NESTED LOOPS
5.2 TABLE ACCESS(BY INDEX ROWID) - CON_DET_CONCEPTO
6.1 INDEX(UNIQUE SCAN) - PK_CON_DET_CONCEPTO(UNIQUE)
5.1 NESTED LOOPS
6.2 TABLE ACCESS(BY INDEX ROWID) - EMI_RECIBO_DESGLOSADO
7.1 INDEX(RANGE SCAN) - IX03_REC_NUM_RECIBO(NON-UNIQUE)
6.1 NESTED LOOPS
7.2 TABLE ACCESS(BY INDEX ROWID) - EMI_RECIBO
8.1 INDEX(RANGE SCAN) - IX04_EMI_REC_SOL(NON-UNIQUE)
7.1 NESTED LOOPS
8.2 TABLE ACCESS(BY INDEX ROWID) - PRO_PRODUCTO
9.1 INDEX(UNIQUE SCAN) - PK_PRO_PRODUCTO(UNIQUE)
8.1 NESTED LOOPS
9.2 TABLE ACCESS(BY INDEX ROWID) - EMI_CONTRATANTE
10.1 INDEX(UNIQUE SCAN) - PK_EMI_CONTRATANTE(UNIQUE)
9.1 NESTED LOOPS(OUTER)
10.2 TABLE ACCESS(BY INDEX ROWID) - EMI_PERSONA
11.1 INDEX(RANGE SCAN) - PK_EMI_PERSONA(UNIQUE)
10.1 MERGE JOIN
11.2 SORT(JOIN)
12.1 TABLE ACCESS(BY INDEX ROWID) - AE_AGENTE
13.1 INDEX(FULL SCAN) - PK_AE_AGENTE(UNIQUE)
11.1 SORT(JOIN)
12.1 MERGE JOIN
13.2 SORT(JOIN)
14.1 TABLE ACCESS(BY INDEX ROWID) - EMI_POLIZA
15.1 INDEX(FULL SCAN) - PK_EMI_POLIZA(UNIQUE)
13.1 TABLE ACCESS(BY INDEX ROWID) - PRO_FORMA_PAGO
14.1 INDEX(FULL SCAN) - PK_PRO_FORMA_PAGO(UNIQUE)