Hle, filtrovaný index. Z dokumentace (důraz):
Filtrovaný index je optimalizovaný neshlukovaný index, který je zvláště vhodný pro pokrytí dotazů, které vybírají z dobře definované podmnožiny dat. Používá predikát filtru k indexování části řádků v tabulce. Dobře navržený filtrovaný index může zlepšit výkon dotazů a také snížit náklady na údržbu indexu a úložiště ve srovnání s indexy s úplnou tabulkou.
A zde je příklad kombinace jedinečného indexu s predikátem filtru:
create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;
To v podstatě vynucuje jedinečnost ID
když RecordStatus
je 1
.
Po vytvoření tohoto indexu bude porušení jedinečnosti vyvoláno chybou:
Msg 2601, Level 14, State 1, Line 13
Nelze vložit duplicitní řádek klíče do objektu 'dbo.MyTable' s jedinečným indexem 'MyIndex'. Hodnota duplicitního klíče je (9999).
Poznámka:Filtrovaný index byl zaveden v SQL Server 2008. Starší verze SQL Serveru naleznete v této odpovědi.