Se, det filtrerede indeks. Fra dokumentationen (min fremhævelse):
Et filtreret indeks er et optimeret ikke-klynget indeks, der er specielt velegnet til at dække forespørgsler, der vælger fra et veldefineret undersæt af data. Den bruger et filterprædikat til at indeksere en del af rækker i tabellen. Et veldesignet filtreret indeks kan forbedre forespørgselsydeevne samt reducere indeksvedligeholdelse og lageromkostninger sammenlignet med indekser i fuld tabel.
Og her er et eksempel, der kombinerer et unikt indeks med et filterprædikat:
create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;
Dette gennemtvinger i det væsentlige entydigheden af ID
når RecordStatus
er 1
.
Efter oprettelsen af det indeks vil en entydighedskrænkelse rejse en fejl:
Msg 2601, Level 14, State 1, Line 13
Kan ikke indsætte dublet nøglerække i objektet 'dbo.MyTable' med unikt indeks 'MyIndex'. Dubletnøgleværdien er (9999).
Bemærk:Det filtrerede indeks blev introduceret i SQL Server 2008. For tidligere versioner af SQL Server, se venligst dette svar.