mirmanero
09-09-2009, 16:57
Ciao a tutti,
ho un problema che mi sta facendo impazzire:
ho una tabella "Tabella" partizionata per data e con un indice locale su un campo che chiamerò A. Se effettuo un semplice query del tipo
select * from Tabella
where data = '01-gen-09'
and A = 'a'
la risposta è molto veloce, dal momento che prima viene selezionata la partizione tramite la data poi vengono selezionati i dati che soddisfano la condizione sul campo A (come confermato dal piano di esecuzione).
Fin qui tutto bene, ma utilizzando una tabella "Calendario" che mi collega due date diverse (che chiamo data1 e data2), con data1 chiave primaria ed effettuando una query del tipo:
select Tabella.* from
Tabella,
Calendario
where Calendario.data1='01-gen-09'
and Tabella.data=Calendario.data2
and Tabella.A='a'
la query diventa lentissima, infatti il piano di esecuzione mi dice che prima accede a tutte le partizioni di Tabella tramite l'indice e solo dopo sceglie quale partizione utilizzare.
Ho provato a guardare le hint ma non ho trovato il modo per forzarlo a invertire le due operazioni.
Qualcuno ha qualche suggerimento???
Grazie!!
ho un problema che mi sta facendo impazzire:
ho una tabella "Tabella" partizionata per data e con un indice locale su un campo che chiamerò A. Se effettuo un semplice query del tipo
select * from Tabella
where data = '01-gen-09'
and A = 'a'
la risposta è molto veloce, dal momento che prima viene selezionata la partizione tramite la data poi vengono selezionati i dati che soddisfano la condizione sul campo A (come confermato dal piano di esecuzione).
Fin qui tutto bene, ma utilizzando una tabella "Calendario" che mi collega due date diverse (che chiamo data1 e data2), con data1 chiave primaria ed effettuando una query del tipo:
select Tabella.* from
Tabella,
Calendario
where Calendario.data1='01-gen-09'
and Tabella.data=Calendario.data2
and Tabella.A='a'
la query diventa lentissima, infatti il piano di esecuzione mi dice che prima accede a tutte le partizioni di Tabella tramite l'indice e solo dopo sceglie quale partizione utilizzare.
Ho provato a guardare le hint ma non ho trovato il modo per forzarlo a invertire le due operazioni.
Qualcuno ha qualche suggerimento???
Grazie!!