16 messaggi dal 24 agosto 2005
Salve, a tutti ho una query che torna 200.000 record circa la query ha una inner join tra una tabella ed una TABLE FUNCTION, la query è molto lenta, ho visto dal query analyzer con l'execution plan che il collo di bottiglia è sulla TABLE FUNCTION, praticamente fà un TABLE SCAN e si prende più del 50% del tempo di esecuzione della query. La mia domanda ora è:

Si possono inserire degli indici sulla TABLE function per velocizzare l'accesso a questi dati ed evitare così il TABLE SCAN?

Grazie
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
Ovviamente no.
Un indice è una struttura fisica mentre una table function è una struttura logica. Un indice può essere creato SOLO su una struttura fisica come una tabella o su una vista (e in questo caso la vista cessa di essere una struttura logica e viene materializzata anche da un punto di vista fisico).
Quello che puoi fare è mettere i dati restituiti dalla table function in una tabella temporanea e su quella costruire un indice.

Bye
16 messaggi dal 24 agosto 2005
grazie x l'immediata risposta...

e magari creare una chiave univoca sempre su questa Table Function? sempre x velocizzarne l'accesso?

Insisto con questa soluzione perchè altrimenti dovrei cambiare molto codice, questa Table Function è richiamata da molte stored procedure....
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
Ripeto: su una table function NON PUOI CREARE INDICI!

Bye

LB

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.