Bạn có thể quan tâm đến Quy tắc lập trình đầu tiên .
Chỉ mục được phân nhóm luôn bao gồm tất cả các hàng. Nó có thể được đặt hàng theo z
, nhưng nó sẽ vẫn chứa tất cả các cột khác ở cấp độ lá.
Lý do SQL Server đôi khi thích quét theo cụm hơn là tìm kiếm chỉ mục là vì điều này. Khi bạn thực hiện tìm kiếm chỉ mục, bạn phải theo dõi nó bằng cách tra cứu dấu trang đến chỉ mục được phân nhóm để truy xuất các cột không có trong chỉ mục.
Khi bạn thực hiện quét chỉ mục theo nhóm, theo định nghĩa, bạn sẽ tìm thấy tất cả các cột. Điều đó có nghĩa là không cần tra cứu dấu trang.
Khi SQL Server mong đợi nhiều hàng, nó sẽ cố gắng tránh tra cứu dấu trang. Đây là một sự lựa chọn đã được thử nghiệm thời gian. Các tìm kiếm chỉ mục không phân tán thường bị đánh bại bằng cách quét chỉ mục theo nhóm.
Bạn có thể kiểm tra điều này cho trường hợp của mình bằng cách ép buộc với with (index(IX_YourIndex))
gợi ý truy vấn
.