Kìa, chỉ mục được lọc. Từ tài liệu (tôi nhấn mạnh):
Chỉ mục được lọc là một chỉ mục không phân tán được tối ưu hóa, đặc biệt thích hợp để bao hàm các truy vấn chọn từ một tập hợp con dữ liệu được xác định rõ ràng. Nó sử dụng một vị từ bộ lọc để lập chỉ mục một phần của các hàng trong bảng. Chỉ mục được lọc được thiết kế tốt có thể cải thiện hiệu suất truy vấn cũng như giảm chi phí lưu trữ và bảo trì chỉ mục so với chỉ mục toàn bảng.
Và đây là một ví dụ kết hợp một chỉ mục duy nhất với một vị từ bộ lọc:
create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;
Điều này về cơ bản thực thi tính duy nhất của ID
khi RecordStatus
là 1
.
Sau khi tạo chỉ mục đó, vi phạm tính duy nhất sẽ gây ra lỗi:
Msg 2601, Mức 14, Trạng thái 1, Dòng 13
Không thể chèn hàng khóa trùng lặp trong đối tượng 'dbo.MyTable' với chỉ mục duy nhất 'MyIndex'. Giá trị khóa trùng lặp là (9999).
Lưu ý:chỉ mục được lọc đã được giới thiệu trong SQL Server 2008. Đối với các phiên bản SQL Server cũ hơn, vui lòng xem câu trả lời này.