SQL Server 2008 en Filtered indexes
Vandaag kwam ik een interessante post tegen op een ander weblog, namelijk dat je in SQL Server 2008 gebruik kunt maken van een zogenaamde Filtered index. Dit houdt in dat je een index kan aanmaken op een stukje van de tabel. Nu lukt het mij zelf niet om direct een groot voordeel van een filtered index te bedenken, maar ze zullen er waarschijnlijk wel zijn.
Andrew Fryer heeft wel een probleem situatie van ‘vroeger’ kunnen oplossen met behulp van een filtered index. Hij beschrijft namelijk de situatie dat een kolom in je tabel altijd unieke waarden moet hebben, maar ook NULL
als waarde mag bevatten (dus leeg is). Op z’n eigen weblog beschrijft hij z’n werkwijze (https://blogs.technet.com/andrew/archive/2008/02/21/sql-server-2008-filtered-indexes.aspx).
Wat hij doet is de volgende code gebruiken in SQL Server 2008.
create unique index production.nullidx on production.product(code) where production.product(code) is not null
Wat ik hier van op maak is dat er een unieke constraint op de kolom production.nullids
komt te staan ALS het veld is ingevuld. Ik twijfel er niet aan dat dit handig kan zijn in enkele situaties.
Ook denk ik dat dit soort indices ook in m’n eigen applicatie(s) wel kunnen worden toegevoegd, echter heb ik deze nieuwe feature nog niet gemist in m’n huidige brouwsels.