13 Things You Should Know About Statistics and the Query Optimizer
Un ottimo articolo pubblicato su Simple Talk che entra nel dettaglio delle statistiche di distribuzione dei dati usate da SQL Server per la generazione dei piani di esecuzione:
Un ottimo articolo pubblicato su Simple Talk che entra nel dettaglio delle statistiche di distribuzione dei dati usate da SQL Server per la generazione dei piani di esecuzione:
Le Dynamic Management Views and Functions recentemente introdotte in SQL Server 2005 forniscono informazioni sullo stato di salute di un’istanza SQL Server. Permettono di diagnosticare i problemi e di verificare se le performance possono essere migliorate, rappresentano uno strumento utilissimo per chi svolge le attività di database administrator e database developer.
Possiamo suddividere le DMV’s in due tipi:
Server-level
Database-level
Per interrogare una dynamic management view o una dynamic management function è necessario disporre del permesso di SELECT (sugli oggetti) in aggiunta ai permessi VIEW SERVER STATE e VIEW DATABASE STATE rispettivamente per consultare le DMV’s a livello server e a livello database.
Le tabelle temporanee vengono tipicamente (e largamente) utilizzate per salvare dati e risultati intermedi durante un’elaborazione. In aggiunta, una volta terminata l’elaborazione, i risultati possono essere presentati all’utente attraverso una tabella temporanea. SQL Server fornisce la possibilità di utilizzare due tipi di tabelle temporanee, tutte memorizzate nel database di sistema tempdb:
Le local temporary tables sono visibili solo dall’utente che le ha create e solo all’interno della stessa connessione, vengono eliminate automaticamente da SQL Server quando l’utente si disconnette.
Whitepaper che dettaglia come SQL Server 2008 crea ed utilizza le statistiche di distribuzione dei dati per generare piani di esecuzione ottimali:
Con SQL Server 2008 fanno il loro debutto gli indici e le statistiche filtrare; sono le strutture che conosciamo già, a cui però viene applicato un criterio di filtro. In questo articolo parleremo degli indici filtrati cercando di capire quando la loro applicazione può migliorare le performance delle query.
Il comando CREATE INDEX può ora accettare la clausola WHERE utilizzata per specificare il criterio di filtro.
Consideriamo, ad esempio, un indice standard definito su due colonne di una tabella (col_1 e col_2), l’ultimo livello (foglia) contiene la combinazione dei valori presenti nelle due colonne. Diversamente, se specifichiamo un criterio nella clausola WHERE del comando CREATE INDEX, per selezionare solo alcuni valori di una colonna, (ad esempio col_1 > 10) le righe che non soddisfano il criterio verranno ignorate, proprio durante la costruzione dell’indice, a prescindere dal valore contenuto nella seconda colonna. Il risultato è una struttura B-Tree più piccola in cui l’ultimo livello (foglia) contiene soltanto i dati che verificano il criterio specificato.