Giới hạn chính xác là rất khó để xác định trước thời hạn.
Một điều mà hầu hết mọi người đánh giá thấp là các yêu cầu cao mà một chỉ mục phải đáp ứng, trước khi nó trở thành một ứng cử viên được sử dụng trong truy vấn.
Một chỉ số hiệu quả (không bao gồm)
cung cấp tính chọn lọc tuyệt vời , ví dụ chỉ trả về một tỷ lệ rất nhỏ (<1%, <2%) trong tổng số hàng. Nếu tính chọn lọc không phải là nhất định - trình tối ưu hóa truy vấn của SQL Server rất có thể sẽ bỏ qua chỉ mục này
lý tưởng nên bao gồm truy vấn, tức là trả về tất cả các cột theo yêu cầu của truy vấn. Nếu bạn có thể tạo một chỉ mục có 1 hoặc 2 cột chỉ mục và bao gồm một số cột (2-4) khác như các cột được bao gồm và do đó bạn có thể bao gồm một truy vấn - thì rất có thể trình tối ưu hóa truy vấn sẽ sử dụng chỉ mục này. Điều đó cũng có nghĩa là: nếu mã của bạn luôn được sử dụng SELECT * .....
để tìm nạp tất cả các cột , thì khả năng các chỉ số được sử dụng sẽ giảm xuống - thực sự rất đáng kể
Tôi chắc chắn cũng có rất nhiều tiêu chí khác - nhưng tôi sẽ tin rằng hai tiêu chí này là những tiêu chí quan trọng nhất. Tất nhiên, bạn phải luôn luôn duy trì các chỉ số của mình được duy trì đúng cách (sắp xếp lại, xây dựng lại) và đảm bảo các số liệu thống kê liên quan đến các chỉ số của bạn được cập nhật.
PS: các chỉ số không bao gồm trên các cột khóa ngoại là một trường hợp đặc biệt; theo mặc định, tôi luôn khuyên bạn nên thêm chúng, vì chúng giúp tăng tốc cả kiểm tra tính toàn vẹn tham chiếu, cũng như JOIN
các ràng buộc FK đó. Nhưng ngay cả ở đây, nó hoàn toàn hợp lệ để "mở rộng" các chỉ số cột FK đó bằng cách thêm một số cột "bao gồm" bổ sung để làm cho chúng hữu ích hơn nữa.