Các cột chính của chỉ mục là một phần của cây b của chỉ mục. Các cột được bao gồm không.
Lấy hai chỉ mục:
CREATE INDEX index1 ON table1 (col1, col2, col3)
CREATE INDEX index2 ON table1 (col1) INCLUDE (col2, col3)
index1
phù hợp hơn cho loại truy vấn này:
SELECT * FROM table1 WHERE col1 = x AND col2 = y AND col3 = z
Trong khi index2
phù hợp hơn cho loại truy vấn này:
SELECT col2, col3 FROM table1 WHERE col1 = x
Trong truy vấn đầu tiên, index1
cung cấp một cơ chế để nhanh chóng xác định các hàng quan tâm. Truy vấn sẽ (có thể) thực thi dưới dạng tìm kiếm chỉ mục, theo sau là tra cứu dấu trang để truy xuất (các) hàng đầy đủ.
Trong truy vấn thứ hai, index2
hoạt động như một chỉ số bao trùm. SQL Server hoàn toàn không phải truy cập vào bảng cơ sở, vì chỉ mục cung cấp tất cả dữ liệu mà nó cần để đáp ứng truy vấn. index1
cũng có thể hoạt động như một chỉ mục bao trùm trong trường hợp này.
Nếu bạn muốn có một chỉ mục bao trùm, nhưng không muốn thêm tất cả các cột vào cây b vì bạn không tìm kiếm chúng hoặc không thể vì chúng không phải là một kiểu dữ liệu được phép (ví dụ:XML), hãy sử dụng Điều khoản INCLUDE.