Có một vài khái niệm và thuật ngữ quan trọng để hiểu khi làm việc với các chỉ mục. Tìm kiếm, quét và tra cứu là một số cách mà các chỉ mục sẽ được sử dụng thông qua các câu lệnh chọn. Tính chọn lọc của các cột chính là không thể thiếu để xác định mức độ hiệu quả của một chỉ mục.
Tìm kiếm xảy ra khi Trình tối ưu hóa truy vấn SQL Server xác định rằng cách tốt nhất để tìm dữ liệu bạn yêu cầu là quét một phạm vi trong một chỉ mục. Tìm kiếm thường xảy ra khi một truy vấn được "bao phủ" bởi một chỉ mục, điều đó có nghĩa là các vị từ tìm kiếm nằm trong khóa chỉ mục và các cột được hiển thị nằm trong khóa hoặc được bao gồm. Quá trình quét xảy ra khi Trình tối ưu hóa truy vấn SQL Server xác định rằng cách tốt nhất để tìm dữ liệu là quét toàn bộ chỉ mục và sau đó lọc kết quả. Việc tra cứu thường xảy ra khi một chỉ mục không bao gồm tất cả các cột được yêu cầu, trong khóa chỉ mục hoặc trong các cột được bao gồm. Sau đó, trình tối ưu hóa truy vấn sẽ sử dụng khóa được phân cụm (đối với chỉ mục được nhóm) hoặc RID (đối với một đống) để "tra cứu" các cột được yêu cầu khác.
Thông thường, các hoạt động tìm kiếm hiệu quả hơn quét, do truy vấn vật lý một tập dữ liệu nhỏ hơn. Có những tình huống không phải là trường hợp này, chẳng hạn như một tập dữ liệu ban đầu rất nhỏ, nhưng nó vượt quá phạm vi câu hỏi của bạn.
Bây giờ, bạn đã hỏi làm thế nào để xác định mức độ hiệu quả của một chỉ số và có một số điều cần lưu ý. Các cột khóa của một chỉ mục được nhóm được gọi là khóa phân cụm. Đây là cách các bản ghi được tạo ra duy nhất trong bối cảnh của một chỉ mục được nhóm. Tất cả các chỉ mục không bao gồm sẽ bao gồm khóa cụm theo mặc định, để thực hiện tra cứu khi cần thiết. Tất cả các chỉ mục sẽ được chèn vào, cập nhật hoặc xóa khỏi cho mọi câu lệnh DML tương ứng. Điều đó đã được nói, tốt nhất là cân bằng hiệu suất tăng trong các câu lệnh được chọn so với các lần truy cập hiệu năng trong các câu lệnh chèn, xóa và cập nhật.
Để xác định mức độ hiệu quả của một chỉ mục, bạn phải xác định tính chọn lọc của các khóa chỉ mục. Độ chọn lọc có thể được định nghĩa là tỷ lệ phần trăm của các bản ghi riêng biệt trên tổng số bản ghi. Nếu tôi có bảng [người] với tổng số 100 bản ghi và cột [First_name] chứa 90 giá trị riêng biệt, chúng tôi có thể nói rằng cột [First_name] được chọn 90%. Độ chọn lọc càng cao, khóa chỉ số càng hiệu quả. Hãy ghi nhớ sự chọn lọc, tốt nhất là đặt các cột chọn lọc nhất của bạn lên đầu trong khóa chỉ mục của bạn. Sử dụng ví dụ [người] trước đây của tôi, điều gì xảy ra nếu chúng ta có cột [last_name] được chọn 95%? Chúng tôi muốn tạo một chỉ mục với [last_name], [first_name] làm khóa chỉ mục.
Tôi biết đây là một câu trả lời hơi dài dòng, nhưng thực sự có rất nhiều điều cần xác định mức độ hiệu quả của một chỉ số, và rất nhiều điều bạn phải cân nhắc với bất kỳ hiệu suất nào đạt được.