SQL Server:
filtered index

In questo articolo parleremo dei filtered index.  Per crearne uno occorre aggiungere, come nell’esempio in foto, una condizione where allo statement di creazione dell’indice. Ad esempio, il suo utilizzo 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

Leggi l’articolo successivo su come utilizzare correttamente campi di tipo datetime all’interno di una query su Microsoft Sql Server.

Source