Migliorare le perfomance di una query usando le views

In Sql Server ho un database con una tabella enorme, si parla di oltre 10 milioni di record (big data). La tabella contiene alcuni tipi di dati differenziati diciamo per area, ho in totale 50 aree geografiche (stati). Quindi penso che se creo 50 viste, una per ogni stato da questa tabella, le prestazioni di esecuzione di una query sql dalla mia applicazione potrebbero migliorare? E' così? Avete altri suggerimenti?

Risolta 2
Sql Server 17-09-2019 3 Risposte 1200 Visite +2

Risposte ( 3 approvate )

  1. Saverio Buccellato
    +2
    17-09-2019 17:42:11
    Rispondi

    Le viste (views) normali (non indicizzate) non possono migliorare le prestazioni. Le viste non sono altro che tabelle temporanee (ricavate da una o più tabelle del db) potrebbero essere pensate come "scorciatoie" o "alias" per fare query SELECT più semplici (i dati che ti servono li raggruppi nella view) anziché complesse interrogazioni o query multiple, poiché non hanno una struttura fisica al di sotto di esse. Detto questo non hanno una particolare incidenza sulle prestazioni, a maggior ragione se esse (le viste) come le tabelle non presentano indici.

     

    Ciò di cui hai bisogno è creare indici (index) appropriati sulla tua tabella e, possibilmente, riprogettare la tabella, ad esempio dividendola in più tabelle.

  2. Claudio Zarpone
    +1
    17-09-2019 17:56:47
    Rispondi

    Se la tua tabella è ben organizzata e dispone dell'indice giusto con le interrogazioni (query) ottimizzate, allora il resto della differenza in termini di performance la fà la quantità di cache, di memoria, e la velocità di lettura del disco (hard disk).

     

    La creazione di viste (views) non risolverà in alcun modo questo problema, devi tenere conto che è sempre lo stesso dato sullo stesso disco / cache, con le viste hai solo un modo logico diverso di riferirsi ad esso.

  3. Michele Agnaloro
    0
    17-09-2019 18:08:40
    Rispondi

    Ad onor del vero per Microsoft Sql Server qualche milione di record non rappresenta un database molto grande, esso è in grado di gestire senza difficoltà big data ben più enormi di questo.

     

    Se in un database relativamente piccolo come il tuo si verificano problemi di prestazioni, allora probabilmente la colpa è da imputare ad una errata indicizzazione della tabella, ad una errata progettazione del database ed esecuzione di query con prestazioni scarse. Il server SQL può gestire trilioni di record se progettato correttamente.

    Di contro le Viste (views) possono invece essere deleterie per le prestazioni se si utilizzano viste che si  richiamano tra di loro diverse volte, quindi come già suggeritoti ti consiglierei di rivedere la progettazione del tuo database ed una corretta gestione degli indici (index) all'interno delle normali tabelle.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Filippo De Buglia

Filippo De Buglia

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva