Eis o índice filtrado. Da documentação (grifo meu):
Um índice filtrado é um índice não clusterizado otimizado especialmente adequado para abranger consultas que selecionam a partir de um subconjunto de dados bem definido. Ele usa um predicado de filtro para indexar uma parte das linhas da tabela. Um índice filtrado bem projetado pode melhorar o desempenho da consulta e reduzir os custos de manutenção e armazenamento do índice em comparação com os índices de tabela completa.
E aqui está um exemplo combinando um índice exclusivo com um predicado de filtro:
create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;
Isso basicamente reforça a exclusividade de
ID
quando RecordStatus
é 1
. Após a criação desse índice, uma violação de exclusividade gerará uma erro:
Msg 2601, Level 14, State 1, Line 13
Não é possível inserir linha de chave duplicada no objeto 'dbo.MyTable' com índice exclusivo 'MyIndex'. O valor da chave duplicada é (9999).
Observação:o índice filtrado foi introduzido no SQL Server 2008. Para versões anteriores do SQL Server, consulte esta resposta.