Tôi đang sử dụng chế độ xem được lập chỉ mục của SQL Server để cải thiện hiệu suất của phép nối lọc một bảng lớn (rất) theo một danh mục trên một bảng nhỏ. ví dụ:
CREATE VIEW BigTableSubset WITH SCHEMABINDING
AS
SELECT b.ID, b.SomeValue from BigTable b
INNER JOIN SmallTable s on (b.CategoryFK = s.CategoryPK)
where s.Type = 'Blah'
CREATE UNIQUE CLUSTERED INDEX PK_BigTableSubset ON BigTableSubset
(ID)
INCLUDE (SomeValue)
(BigTable.ID là PK trên BigTable)
Hiệu năng truy vấn tăng đáng kể (vì tập hợp con yêu cầu bigtable đã được lưu trữ), nhưng tôi lo ngại để đảm bảo rằng SQL có thể tự cập nhật chỉ mục theo cách tối ưu nhất khi một trong hai bảng nguồn được cập nhật.
Vì vậy, câu hỏi là: tôi có cần đưa SmallTable.C CategoryPK vào chỉ mục được nhóm của chế độ xem để đảm bảo điều này hay SQL sẽ tự động làm điều này như một phần của cấu trúc chỉ mục? Hoặc nói cách khác, làm thế nào để SQL xác định những trang nào trong chỉ mục cần cập nhật mỗi khi cập nhật bảng 'bàn tay trái' (SmallTable) và tôi có cần phải làm gì để tạo điều kiện không?