Qual è la differenza tra i dati SELECT dalla tabella direttamente o dalla vista?
E qual è il miglior uso per ciascuno?Differenza tra selezionare direttamente dalla tabella e visualizzare
risposta
Secondo Microsoft, se si utilizzano le viste indicizzate in SQL Server 2000/2005/2008, è possibile ottenere prestazioni eccellenti.
Le viste indicizzate possono aumentare le prestazioni della query nei modi seguenti
1. Le aggregazioni possono essere precalcolate e memorizzate nell'indice per ridurre al minimo i costosi calcoli durante l'esecuzione della query.
2. Le tabelle possono essere preimpostate e il set di dati risultante viene memorizzato.
3. Combinazioni di join o aggregazioni possono essere memorizzate
Ma proprio come gli indici sulle tabelle, gli indici sulle viste subiscono un overhead di modifica. Pertanto, aggiungi un indice a una vista solo se il vantaggio della sua velocità aumenta quando supera il tempo necessario per aggiornare l'indice della vista.
I collegamenti seguenti forniscono ulteriori informazioni su questo (su quando utilizzare cosa).
Nella maggior parte dei database, sono funzionalmente intercambiabili (ignorando le viste materializzate, che sono comunque qualcosa di completamente diverso). Esistono due motivi comuni per la creazione di viste. 1. Meccanismo di astrazione (e alias di colonne) e 2. Per autorizzazioni e controllo di accesso. Ma per quanto riguarda l'efficienza, non è un problema.
Non vero. Alcuni database presentano problemi di prestazioni quando le viste sono nidificate. –
E hai qualche riferimento? Ciò sembra altamente improbabile, (anche se è per questo che ho detto "nella maggior parte dei database"). – dkretz
Sì. In Oracle le viste nidificate possono comportarsi male. Lo abbiamo sperimentato noi stessi confrontando le query espanse con le stesse query definite come più viste all'interno di Oracle. –
pensare in questo modo:
Una vista è semplicemente una dichiarazione prescelta che vive sul server ed è stato compilato dal motore SQL.
Generalmente le viste sono utilizzate per limitare/semplificare i risultati dalla tabella.
saluti K
Dipende dalla base di dati e la definizione della vista.
Una semplice vista che fa l'alias delle colonne o esegue calcoli semplici non sarà diversa dal fare direttamente la query.
Tuttavia, in alcuni casi le visualizzazioni possono essere molto più lente. Un esempio: in Oracle, se nidifichi troppo le query di visualizzazione (ad esempio, una vista utilizza un altro come tabella, che ne usa un'altra, ecc.), Puoi creare prestazioni pessime.
In generale è necessario testare con il database specifico e le query in questione.
Stai affermando che l'utilizzo della vista rende la query più lenta della sottoselezione in linea che rappresenta? – Khb
Se è inefficiente, scommetto che è perché le viste aggiungono impropriamente più campi e/o join del necessario. Ma è sempre la stessa prestazione dell'equivalente istruzione SQL singola. – dkretz
No, abbiamo provato a utilizzare le query SAME, solo nelle visualizzazioni o in selezioni con sottoquery. Quest'ultimo può essere molto più veloce. Perché? Boh, Oracle è pieno di mistero e non in senso buono. –
Se leggi questo articolo da vicino, vedrai che sta parlando di "visioni materializzate", che sono in realtà un altro animale, che crea davvero una forma speciale di tavolo. – dkretz