Ето, филтрираният индекс. От документацията (подчертавам моя):
Филтриран индекс е оптимизиран неклъстериран индекс, особено подходящ за покриване на заявки, които избират от добре дефиниран подмножество данни. Използва предикат на филтър, за да индексира част от редовете в таблицата. Добре проектираният филтриран индекс може да подобри производителността на заявката, както и да намали разходите за поддръжка и съхранение на индекса в сравнение с индексите с пълна таблица.
И ето пример за комбиниране на уникален индекс с предикат на филтър:
create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;
Това по същество налага уникалността на ID
когато RecordStatus
е 1
.
След създаването на този индекс, нарушение на уникалността ще предизвика грешка:
Съобщение 2601, ниво 14, състояние 1, ред 13
Не може да се вмъкне дублиран ключов ред в обект 'dbo.MyTable' с уникален индекс 'MyIndex'. Стойността на дублирания ключ е (9999).
Забележка:филтрираният индекс е въведен в SQL Server 2008. За по-ранни версии на SQL Server, моля, вижте този отговор.