Domanda

Ho un grande tavolo con 10+ milioni di dati in un database SQL Server. La tabella contiene alcuni tipi di dati per tutti i 50 stati degli Stati Uniti. Quindi, se creo 50 visite, una per ogni stato, da questo tavolo, sarebbe la performance di fare query da mia domanda potrebbe essere migliorato? Altri suggerimenti?

È stato utile?

Soluzione

No. Una vista è una macro che espande quindi gli stessi tavoli finiscono nel piano comunque.

A meno che non è indicizzato. 50 viste indicizzate è molto probabilmente eccessivo.

Se si dispone di un rallentamento delle prestazioni con 50 milioni di righe (che non è più di tanto in realtà), allora si tratta di un problema di indicizzazione.

Modifica:

Per cominciare, mi piacerebbe usare il indice ponderato mancante DMV interrogazione per vedere dove si ottiene il maggior successo per il dollaro

Altri suggerimenti

Normale (non indicizzati) parere non possono migliorare le prestazioni -. Potrebbero essere pensato come 'abbreviazioni' o 'alias' per query SELECT, in quanto non hanno la struttura fisica sotto di loro

Le viste indicizzate sono una bestia diversa, ma non sembra che ne avete bisogno finora.

Quello che vi serve è quello di creare indici appropriati sulla vostra tavola, e, possibilmente, di ridisegnare la tabella (per esempio, dividerlo a diverse tabelle).

Se volete consigli più specifici, postare qui la struttura della tabella e alcuni esempi di domande tipiche (quelli che si desidera ottimizzare per).

Sei sulla strada giusta:

Inizia con fare in modo di indicizzare i dati in modo da riflettere la legge è necessario essere veloci. Poi, dal momento che il filtraggio ha renderlo più veloce, vorrei prendere in considerazione richiedono il filtraggio dello stato, consentendo l'accesso ai dati tramite una stored procedure (con un parametro per lo stato).

Se avete l'indice corretto e l'uso nei vostri piani di esecuzione, allora le grandi questioni è la quantità di memoria cache e velocità di lettura del disco. Creazione di punti di vista non risolverà nessuno di quelli, è ancora lo stesso di dati sullo stesso disco / cache, solo un modo diverso di logica riferimento ad essa.

Un semplice suggerimento:

use [YourDataBase]
select * from sys.dm_db_missing_index_details as ddmid

Questa è una piccola base di dati in modo tale che se si hanno problemi di prestazioni tuo sbagliato l'indicizzazione, è basi di dati di progettazione è male o si è progettato query scarso rendimento. SQL server in grado di gestire bilioni di record senza una goccia di sudore, se correttamente progettato.

Visualizzazioni BTW può essere Killers prestazioni se si utilizza una vista che le opinioni di chiamata.

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