>>ciao a tutti...
>ciao
>
>>ho una vista che impiega 1 m e 46 secondi...(12 tabelle e 24 colonne)
>>come posso migliorare le performance ?
>di cosa? Di solito la vista è una query salvata sul database,
>ma è fatta per essere riutilizzata nel codice, non solo come
>una semplice tabella.
>Vuoi ottimizzare la chiamata nella vista? Oppure una query che
>la consuma? Questo cambia abbastanza il punto di vista.
>forse tutte e due
>>premetto che ho già ridotto le sciocchezze a zero: non ci sono
>>order by, pochissimi filtri....ecc
>sciocchezze...
dipende
>A volte i filtri sono importantissimi per ridurre i set.
>Le order by invece nelle viste non andrebbero mai fatte, a meno
>che la vista non contenga una clausola di TOP.
>
>>basta indicizzarla per fare la differenza?
>vediamo di capire come la chiami e com'è fatta.
>
>>se si come? tempo fa mi ero cimentato anche in storedprocedure...ma era qualcosa di piu grande di me...
>sono due tipi di oggetti differenti. La vista è una tabella virtuale,
>La stored procedure è una programmabilità, che ti dà anche la
>possibilità di spezzare il lavoro per renderlo più performante
>e anche ricco di logiche.
ciao ale
voglio ridurre il tempo di esecuzione (
ho studiato un paio di testi sulle view...mi ricordo solo una cosa 
scherzi a parte
ricordo che inserendo un indice clust da "fisicità" (oddio spero non ho scritto na ca...ta) alla view e quindi con l'indice i tempi per "ritrovare i record" sono minori...ricordo anche che usare dati deterministici è meglio (dare 2013 anziche year(getdate()) è meglio)...
insomma tutto quello che ricordo ...non mi serve a molto
SELECT CASE line WHEN A THEN '1' WHEN B THEN '2' WHEN C THEN '3' ...ELSE 'X' END AS linea,
SUM(CASE WHEN docume LIKE 'N%' THEN - valor ELSE valor END) AS fatt_netto,
SUM(CASE WHEN docume LIKE 'N%' THEN - qta ELSE qta END) AS quantita, anno, articolo, collezione...
FROM TAB INNER JOIN
TAB1 INNER JOIN
... = ...
...INNER JOIN...
...INNER JOIN...
...INNER JOIN...
...INNER JOIN...
...LEFT OUTER JOIN...
...LEFT OUTER JOIN...
...LEFT OUTER JOIN...
...RIGHT OUTER JOIN...
....
WHERE (TAB1.docume <> 'XX') AND (TAB1.docume <> 'YY')
GROUP BY line, anno, .............
HAVING (TAB1.line <> '7') AND (TAB1.line <> '8')
Non so se ti è utile ma nella sostanza è questa