Bakın, filtrelenmiş indeks . Belgelerden (vurgu benim):
Filtrelenmiş bir dizin, özellikle iyi tanımlanmış bir veri alt kümesinden seçim yapan sorguları kapsamaya uygun, optimize edilmiş kümelenmemiş bir dizindir. Tablodaki satırların bir bölümünü dizine eklemek için bir filtre koşulu kullanır. İyi tasarlanmış filtrelenmiş bir dizin, tam tablo dizinlerine kıyasla sorgu performansını artırabilir ve dizin bakımı ve depolama maliyetlerini azaltabilir.
Ve işte benzersiz bir dizini bir filtre koşulu ile birleştiren bir örnek:
create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;
Bu, esasen IDne zaman RecordStatusolduğu konusunda benzersizliği zorlar 1.
Bu dizinin oluşturulmasının ardından, bir benzersizlik ihlali bir hata yaratacaktır:
Msg 2601, Düzey 14, Durum 1, Satır 13
Benzersiz dizin 'MyIndex' olan 'dbo.MyTable' nesnesine yinelenen anahtar satırı eklenemiyor. Yinelenen anahtar değeri (9999).
Not: Filtrelenmiş dizin, SQL Server 2008'de tanıtıldı. SQL Server'ın önceki sürümleri için lütfen bu yanıta bakın .