Visualizzazioni indicizzate SQL Server

Visualizzazioni indicizzate SQL Server

Una vista in SQL Server si riferisce a una query memorizzata in un catalogo di database per riferimento futuro. Le viste SQL Server fungono da tabelle virtuali che non contengono dati effettivi da soli. Invece, archiviano una serie di query che è possibile eseguire su una tabella o altri oggetti di database.

Questa guida imparerà come lavorare viste SQL Server e viste indicizzate.

Visualizzazioni del server SQL: le basi

Prima di discutere su come lavorare con viste indicizzate, apprendiamo le basi della creazione di una vista.

Supponiamo di avere un'istruzione selezionata che restituisce un set di risultati. Per esempio:

Usa SalesDB;
Seleziona Top 10 * dalle vendite da dove quantità = 1000;

La query di esempio sopra restituisce i record in cui la quantità è pari a 1000. Se vogliamo utilizzare la stessa query e ottenere un set di risultati simili, possiamo salvarlo in a .File SQL e reinserirlo quando necessario.

Un modo migliore per farlo è creare una vista con la query sopra. Ad esempio, possiamo creare una vista chiamata sopra_thomila come mostrato nella query mostrata di seguito:

Usa SalesDB;
ANDARE
Crea View top_th migliaia come selezionato * Dalle vendite dove quantità> 1000;

Una volta che abbiamo la domanda come vista, possiamo riutilizzarla come:

..
ANDARE
Seleziona * da top_th migliaia;

La query dovrebbe restituire il set di risultati come:

In SQL Server Management Studio, è possibile visualizzare le viste memorizzate in una tabella navigando a:

Database -> Database di destinazione -> Tabelle -> Visualizzazioni

Esistono vari motivi per utilizzare le visualizzazioni in SQL Server. Tuttavia, i principali includono sicurezza e coerenza.

Per eliminare una vista da una tabella, è possibile utilizzare la query di visualizzazione Elimina come mostrato:

Rilascia la vista se esiste top_th migliaia;

Visualizzazioni indicizzate SQL Server

Come accennato, una normale vista SQL Server non tiene da sola dati. Contiene una serie di query che producono un set di risultati specifico. Questo aiuta a fornire sicurezza e coerenza. Tuttavia, una vista non fornisce alcun miglioramento delle prestazioni sul set di risultati.

È qui che entrano in gioco le viste indicizzate.

Le viste indicizzate sono come una normale tabella di database perché possono archiviare i dati fisicamente. Questo può essere un ottimo strumento che può aiutare a migliorare le prestazioni di una domanda.

Discutiamo di creare lavoro con viste indicizzate in SQL Server.

Come creare una vista indicizzata?

Ci sono due passaggi chiave durante la creazione di una vista indicizzata in SQL Server:

  1. Crea una vista con un parametro di legame dello schema.
  2. Successivamente, creare indice cluster sulla vista per materializzarlo.

Facciamo un esempio per capire come utilizzare una vista indicizzata.

Considera la query di esempio di seguito che ha creato una vista indicizzata nella tabella delle vendite.

Crea View Sales_Idexed con schemabinding come vendita selezionata.SalesID, vendite.ProductID, vendite.CustomerID da DBO.Vendite in cui quantità> 1000;
ANDARE

Noterai alcune cose diverse da una visione tipica. Innanzitutto, includiamo l'opzione con schemabindig.

Questa opzione garantisce che non è possibile modificare la struttura delle tabelle in un formato che influisce sulla vista materializzata sottostante a meno che non si lasci cadere la vista esistente.

In secondo luogo, la denominazione include un formato in due parti. SQL Server richiede di definire lo schema.oggetto quando si crea una vista indicizzata (nello stesso database).

SUGGERIMENTO: Ricorda che SQL Server aggiornerà le modifiche appliche apportate alle tabelle sottostanti alla vista indicizzata. Questo porta alla scrittura di spese generali per le tabelle referenziate.

Una volta creata la vista, dobbiamo creare un indice cluster. Possiamo creare un indice come:

Crea indice cluster unico My_index su DBO.Sales_indexed (SalesID);

La query sopra dovrebbe creare un indice cluster sulla vista. Su SSMS, è possibile visualizzare l'indice cluster come:

Una volta che abbiamo l'indice cluster, possiamo interrogare i dati come:

Seleziona * da DBO.Sales_indexed;

SQL Server utilizza la vista Sales_Indexed invece di interrogare le tabelle effettive.

Conclusione

In questo articolo, hai imparato come creare e utilizzare le viste indicizzate in SQL Server, consentendo di creare una vista materializzata.