SQLServer, Table function ed INDICI

giovedì 17 settembre 2009 - 16.37

gemon Profilo | Newbie

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

speedx Profilo | Junior Member

SU sql SERVER PUOI CREARE INDICI SULLE TABELLE PER VELOCIZZARE LE ESTRAZIONI, SE UTILIZZI SQL 2008 AGGIUNGENDO IL PIANO DI ESECUZIONE TI FORNISCE LUI GIà UNA PRIMA IDEA DEGLI INDICI DA CREARE.
//// Marcello C.

lbenaglia Profilo | Guru

>Si possono inserire degli indici sulla TABLE function per velocizzare
>l'accesso a questi dati ed evitare così il TABLE SCAN?
No, al più li puoi definire su tabelle e viste (se materializzate).
Ad ogni modo per rispondere adeguatamente alla tua domanda occorrerebbe avere a disposizione un esempio completo su cui ragionare.

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gemon Profilo | Newbie

allora, ho una table function che fa due select in union e torna 200.000 record (chiamiamole timbrature del personale), poi ho diverse stored procedure client che utilizzano questa table function e mettono in join altre tabelle del db, ad esempio l'anagrafica, la sede delle persone con appunto ad ognuno le proprie timbrature.... dall'execution plan ho visto che viene eseguito un table scan sulla table function.....

lbenaglia Profilo | Guru

>allora, ho una table function che fa due select in union e torna
>200.000 record (chiamiamole timbrature del personale), poi ho
>diverse stored procedure client che utilizzano questa table function
>e mettono in join altre tabelle del db, ad esempio l'anagrafica,
>la sede delle persone con appunto ad ognuno le proprie timbrature....
>dall'execution plan ho visto che viene eseguito un table scan
>sulla table function.....
Si... ma senza un esempio reale e completo dubito che potrai ricevere la soluzione al tuo problema.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5