filtered index

SQL Server: filtered index

In questo articolo parlerò dei filtered index. Per crearne uno occorre aggiungere, come nell’esempio in foto, una condizione where allo statement di creazione dell’indice. Scriviamo ad esempio:

CREATE Non Clustered Index Idx_Test

ON #Tabella(Colonna2)

WHERE Colonna2 IS NOT NULL;

La creazione di Filtered Index può rivelarsi molto efficace quando occorre filtrare i dati utilizzando una colonna sparsa che contiene spesso null.

La presenza della where nella definizione dell’indice avrà come effetto il salvataggio nell’indice dei (generalmente pochi) valori che rispettano la condizione, con un conseguente risparmio di memoria e di costi di mantenimento.
Al contempo le query che lo utilizzano risulteranno tendenzialmente più veloci.

Un altro possibile utilizzo di un Filtered index è quello di inserire un vincolo di univocità sui valori di una colonna sparsa, tralasciando di conseguenza i null. Per far ciò basterà aggiungere all’indice l’attributo unique.

Nella query in foto, tramite la stored procedure di sistema sp_spaceused, possiamo apprezzare la differenza di dimensione tra un indice “classico” e uno filtered, creato su una colonna con molti null.

filtered index

Articoli correlati

Visita la pagina del nostro corso sulle performance di Sql Server per imparare a progettare e valutare l’utilità degli indici del tuo database.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Torna su