Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/06/2011, 10:19
rcastaneda
 
Fecha de Ingreso: junio-2011
Mensajes: 16
Antigüedad: 12 años, 10 meses
Puntos: 0
Exclamación OPTIMIZAR SELECT ORACLE 10g

Esta consulta esta tardando de 4 a 10 hrs mas de lo normal y ya he probado varios Hints y no me han ayudado en Nada. no logro hubicar cual es la parte que hace que se vuelva Pesada. Alguien me podria apoyar la Base es de ORACLE 10G
Cualquier sugerencia es buena.
Soy nuevo en el Foro y prometo estar activo y apollando.

SELECT /*+ USE_HASH(ACT, AD) */
RPAD('-000000001',10,' ')||
RPAD(' ',10,' ')||
RPAD(AD.COD_BONO,10,' ')||
CASE WHEN TRUNC(SYSDATE-1) > TRUNC(AD.FEC_CADUCA) THEN 'CAD'
WHEN AD.SEC_BAJA IS NOT NULL AND AD.SEC_ACTUACION IN (SELECT AC.SEC_ACTANUL FROM PPGA_ACTABOPRE AC WHERE AC.COD_ACTUACIO='AB') THEN 'ANU'
WHEN AD.SEC_BAJA IS NOT NULL AND AD.NUM_TELEFONO IN (SELECT AC.NUM_TELEFONO FROM PPGA_ACTABOPRE AC WHERE AC.COD_ACTUACIO='BB') THEN 'BBE'
WHEN BP.COD_ESTADO = 'V' THEN 'CON'
ELSE
'VIG' END ||
RPAD('NA',10,' ')||
RPAD(ACT.COD_USUARIO,30,' ') ||
CASE WHEN AD.COD_PROMO IS NULL THEN 'NI '
WHEN AD.COD_PROMO IN (SELECT PR.COD_PROMOCION FROM PROMO.PPGA_PROMOCIONES PR) THEN RPAD(AD.COD_PROMO,32,' ')
ELSE RPAD('B_'||AD.COD_PROMO,32,' ') END ||
'AA '||
' '||
'0000000001'||--LPAD(COUNT(*), 10, '0')||
RPAD(AD.NUM_TELEFONO ,15, ' ')||
'NI '||
CASE WHEN TBN.COD_MODBONO = 'MI' THEN TO_CHAR(AD.CAN_BONIFICA/60,'S099999999.9990') ELSE TO_CHAR(AD.CAN_BONIFICA,'S099999999.9990') END||
' '||
' '||
' '||
TO_CHAR(ACT.IMP_COSTE/1000,'S099999999.9990')||
RPAD(NVL(TO_CHAR(ACT.FEC_MODIFICA, 'YYYYMMDDHH24MISS'),' '),14,' ')||
RPAD(NVL(TO_CHAR(AD.FEC_INSTALAC, 'YYYYMMDDHH24MISS'),' '),14,' ')||
RPAD(NVL(TO_CHAR(AD.FEC_ALTA, 'YYYYMMDDHH24MISS'),' '),14,' ')||
RPAD(NVL(TO_CHAR(AD.FEC_CADUCA, 'YYYYMMDDHH24MISS'),' '),14,' ')||
' '||
' '||
' '||
' '||
RPAD(ABO.COD_ESTAPREP,18, ' ')||
RPAD(TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'),14,' ')
FROM PPGA_ACTABOPRE ACT, PPGA_ADQUISICIONES AD, PPGA_ABOPREPCOM ABO, PPGA_BONOS BO, PPGA_BONOPRE BP, PPGA_TIPBONO TBN
WHERE ACT.COD_ACTUACIO='AB'
AND ACT.COD_ESTAREC='EJ'
AND ACT.SEC_ACTUACION = AD.SEC_ACTUACION
AND ABO.FEC_ACTIVA < TRUNC(SYSDATE)
AND NVL(AD.FEC_CADUCA,trunc(SYSDATE)) >= TRUNC(sysdate)-2
AND AD.NUM_TELEFONO = BP.NUM_TELEFONO
AND AD.NUM_TELEFONO = ABO.NUM_TELEFONO
AND AD.COD_BONO = BO.COD_BONO
AND BO.TIP_BONO = BP.TIP_BONO
AND BO.TIP_BONO = TBN.TIP_BONO
AND ABO.COD_ESTAPREP IN ('X','T','W','L','V','A')
UNION ALL
SELECT /*+ FULL(BP) INDEX(ABO, PK_ABOPREPCOM) FULL(TBN) */
RPAD('-000000001',10,' ')||
RPAD(' ',10,' ')||
RPAD(BP.TIP_BONO,10,' ')||
'CON' ||
RPAD('NA',10,' ')||
RPAD(NVL(TBN.COD_USUARIO,' '),30,' ')||
'NI '||
'AA '||
' '||
'0000000001'||
RPAD(BP.NUM_TELEFONO,15,' ')||
'NI '||
' '||--- Se elimina por que es a nivel de bono NUM_UNIDADES_INICIALES_BENEFICIO
' '||
' '||
' '||
' '||--- Se elimina por que es a nivel de bono. IMP_COSTO_BENEFICIO
RPAD(NVL(TO_CHAR(BP.FEC_ESTABONO, 'YYYYMMDDHH24MISS'),' '),14,' ')||
RPAD(NVL(TO_CHAR(BP.FEC_INICIO, 'YYYYMMDDHH24MISS'),' '),14,' ')||
RPAD(NVL(TO_CHAR(BP.FEC_INICIO, 'YYYYMMDDHH24MISS'),' '),14,' ')||
RPAD(NVL(TO_CHAR(BP.FEC_CADUCA, 'YYYYMMDDHH24MISS'),' '),14,' ')||
' '||
' '||
' '||
' '||
RPAD(ABO.COD_ESTAPREP,18, ' ')||
RPAD(TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'),14,' ')
FROM PPGA_BONOPRE BP, PPGA_ABOPREPCOM ABO, PPGA_TIPBONO TBN
WHERE BP.NUM_TELEFONO=ABO.NUM_TELEFONO
AND BP.COD_PARTICION = ABO.COD_PARTICION
AND BP.TIP_BONO = TBN.TIP_BONO
and BP.fec_estabono >= TRUNC(SYSDATE-1)
and BP.fec_estabono < TRUNC(SYSDATE)
and BP.COD_ESTADO='V'
AND ABO.COD_ESTAPREP IN ('X','T','W','L','V','A')
AND ABO.FEC_ACTIVA < TRUNC(SYSDATE) ;