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

Hola Matanga espero me puedas apoyar..... realice unas modificaciones a la consulta y las han probado y me alegan que no se esta paralelisando no se como leer esto en el plan de ejecución si tal ves me pudieras apollar donde ellos pueden identificar que no toma paralelismo la consulta... te muesto como ha quedado mi consulta final.
y en otro mensage te pongo mi nuevo plan de ejecucion.

Ahora no se si exista algún manual o algo asi que conozcas respecto al plan de ejecución ya que me esta costando mucho trabajo investigar y entenderlo

Saludos..
-------------------------------------------------

SELECT /*+ full (ACT) full (ABO) USE_HASH(ACT, ABO) parallel ( ABO 12 ) parallel ( ACT 12 ) */
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 /*+ index ( ac PPGA_ACTABOPRE_I02 ) */ 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 /*+ index ( ac PPGA_ACTABOPRE_I02 ) */ 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 /*+ index ( PR PK_PROMOCIONES ) */ 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) FULL(TBN) use_hash ( BP abo ) parallel ( abo 12 ) parallel ( bp 12 )*/
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)
;