In SQL Server, quando dovrei utilizzare una vista indicizzata invece di un vero tavolo?

StackOverflow https://stackoverflow.com/questions/3861476

  •  27-09-2019
  •  | 
  •  

Domanda

Lo so in SQL Server è possibile creare indici su una vista, poi la vista salva i dati dalla tabella sottostante. Quindi è possibile interrogare la vista. Ma, perché ho bisogno di utilizzare la vista, invece di tavolo?

È stato utile?

Soluzione

Si consiglia di utilizzare, al fine di semplificare le query. Nei nostri progetti, il consenso è di utilizzare una vista per le interfacce, e soprattutto "le interfacce di rapporto".

Immaginate hai una tabella client, e il manager vuole un rapporto ogni mattina con il nome del cliente, e il loro saldo del conto (o qualsiasi altra cosa). Se si codifica il report contro il tavolo, si sta creando un forte legame tra il vostro rapporto e il vostro tavolo, rendendo poi cambia difficile.

D'altra parte se il vostro rapporto colpisce una vista, è possibile ruotare liberamente il database; fino a quando la vista è la stessa delle opere di report, il manager è felice e tu sei libero di sperimentare con il database. Si vuole separare i metadati cliente dalla tabella principale cliente? andare per esso, e unire le due tabelle nella vista. Si vuole denormalizzare le informazioni della spesa per il cliente? nessun problema, la vista può adattarsi ...

Per essere onesti, è la mia vista come programmatore, ma altri usi sarà certamente essere trovato dai guru db:)

Altri suggerimenti

Una tabella è dove i dati sono fisicamente memorizzati.

Una vista è dove le tabelle sono riassunti o raggruppati per fare gruppi di tabelle più facile da usare.

Una vista indicizzata permette una query per utilizzare una vista, e non è necessario ottenere i dati dalla tabella sottostante, come la vista ha già i dati, aumentando così le prestazioni.

Non si poteva ottenere lo stesso risultato con solo le tabelle, senza denormalizing il database, e quindi potenzialmente la creazione di altre questioni.

Un vantaggio di utilizzare una vista indicizzata è per ordinare i risultati di 2 o più colonne, in cui le colonne sono in tabelle differenti. Per esempio, hanno una vista che è il risultato di tabla1 e table2 filtrate per table1.column1, table2.column2. È quindi possibile creare un indice su column1, column2 per ottimizzare la query

In sostanza, utilizzare la vista:

  1. Quando si utilizza la stessa query complesse su molti tavoli, più volte.
  2. Quando nuovo bisogno del sistema per leggere i dati della tabella vecchi, ma non guarda a cambiare il loro schema percepito.

viste indicizzate possono migliorare le prestazioni con la creazione di indice più preciso senza aumentare la ridondanza.

Una vista è semplicemente un'istruzione SELECT che è stato dato un nome e memorizzati in un database. Il vantaggio principale di una vista è che una volta che è creato, si comporta come un tavolo per tutti gli altri istruzioni SELECT che si desidera scrivere.

L'istruzione select per la vista può fare riferimento a tabelle, altre viste e funzioni.

È possibile creare un indice sulla vista (vista indicizzata) per migliorare le prestazioni. Una vista indicizzata è auto-aggiornamento, immediatamente riflettendo modifiche alle tabelle sottostanti.

Se la vista indicizzata seleziona solo le colonne da una tabella, si potrebbe altrettanto bene posizionare l'indice su quel tavolo e query che tavolo direttamente, la vista sarebbe solo causare sovraccarico per il database. Tuttavia, se le coperture istruzione SELECT più tabelle con join ecc di quanto si potrebbe ottenere un incremento delle prestazioni, ponendo un indice per la vista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top