Sucede que tengo una tabla particionada por rango, las particiones son generadas diariamente tomando como índice de partición una columna llamada S_TIMESTAMP de tipo Date y tengo la siguiente consulta:
Código SQL:
Pero al analizar el plan de ejecución me arroja varios Table Access Full.Ver original
SELECT COL_A, COL_B, COL_C, S_TIMESTAMP FROM DM.CDR_GPRS PARTITION(P_20140618) WHERE S_TIMESTAMP > TO_DATE('20140616205959', 'YYYYMMDDHH24MISS') UNION SELECT COL_A, COL_B, COL_C, S_TIMESTAMP FROM DM.CDR_GPRS PARTITION(P_20140619 ) UNION SELECT COL_A, COL_B, COL_C, S_TIMESTAMP FROM DM.CDR_GPRS PARTITION(P_20140620 ) UNION SELECT COL_A, COL_B, COL_C, S_TIMESTAMP FROM DM.CDR_GPRS PARTITION(P_20140621 ) UNION SELECT COL_A, COL_B, COL_C, S_TIMESTAMP FROM DM.CDR_GPRS PARTITION(P_20140622) WHERE S_TIMESTAMP <= TO_DATE('20140620205959', 'YYYYMMDDHH24MISS');
https://www.dropbox.com/sh/2ha2zqfr8...#f:print01.png
Para el primer select me toma correctamente el índice creado (IDX_GPRS_S_TIMESTAMP) no hay Table Access Full. Para los selects del centro que no tienen where pienso que se debe porque se hace un barrido de toda la partición, sin embargo, me extraña el último select que es muy similar al primero ya que filtra por el campo S_TIMESTAMP que está indizado.
Por favor si me pudieran orientar para optimizar está consulta.
Muchas gracias, saludos.