Join con Tabla particionada y tabla temporal global

carporras
05 de Septiembre del 2003
Tengo una tabla particionada por rangos temporales.
Por otro lado tengo una vista que hace joins con esta tabla y otra tabla temporal que se usa para pasar parámetros.
Al ejecutar la vista para un rango de fechas cualquiera(que estan en la tabla temporal), oracle no accede directamente a las particiones de esas fechas. Si pongo a mano esas fechas, es decir sin usar la tabla temporal, si accede.
Alguien sabe si puede acceder de alguna manera usando una tabla temporal.
He probado creando los campos de la fecha como date y como varchar pero no accede a las particiones de ninguna manera.
La tabla particionada tiene pasadas las estadisticas.

Ejemplo:
Si hago

select /*+choose*/ *
from mi_tabla_particionada p
where p.fecha between to_date('1/1/2003','dd/mm/yyyy') and to_date('31/1/2003,'dd/mm/yyyy')

oracle accede a la particion del mes de enero del 2003

pero si hago:

insert into mi_tabla_temporal(fecha_ini,fecha_fin) values (to_date('1/1/2003','dd/mm/yyyy'),to_date('31/1/2003,'dd/mm/yyyy'))


select /*+choose*/ *
from mi_tabla_particionada p,
mi_tabla_temporal t
where p.fecha between t.fecha_ini and t.fecha_fin

No accede a la particion correpondiente.


LA VERSION DE ORACLE ES LA 8i

Nanardi
05 de Septiembre del 2003
No se bien los datos que tenes en la tabla temporal, pero como la temporal trabaja por sesion, tenes que tener en cuenta esto. Ya que si abris en una misma aplicacion con el mismo usuario, las sesiones son diferentes, lo que hace que nunca puedas ver los datos de otra sesion que no sea en la que estas.
Por un lado es bueno, pero por ahi te trae complicaciones. Me dijeron que hay una opcion para hacer un select y ver todos los datos, pero estoy buscando cual es.
Espero que se sirva de algo.
Saludos Cordiales