Và vì vậy, bước vào nghệ thuật điều chỉnh hiệu suất và chiến lược lập chỉ mục ...
Nó có vẻ hợp lý với tôi để sửa đổi định nghĩa chỉ mục hiện có để bao gồm các cột được đề xuất
Tôi sẽ lấy trích dẫn của bạn và viết định nghĩa chỉ mục thứ ba:
create index [idx_index3]
on [table1] (col1, col2, col3)
include (col4, col5, col6....);
Đó phải là CREATE INDEX
tuyên bố tương ứng với tuyên bố được trích dẫn của bạn.
Điều đó rất tốt có thể là một giải pháp thận trọng, nhưng nó phụ thuộc . Dưới đây là một vài ví dụ khi tôi nói rằng nó phụ thuộc.
Nếu bạn có một khối lượng công việc chung bao gồm hầu hết các truy vấn như thế này:
select col1, col2, col3
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
Sau đó, idx_index1
chỉ số của bạn sẽ được vững chắc. Hoàn toàn hẹp, đó là một chỉ mục thỏa mãn truy vấn đó mà không có dữ liệu không liên quan trong đó (không tính đến định nghĩa chỉ mục được nhóm, nếu có).
Nhưng nếu bạn có khối lượng công việc bao gồm các truy vấn chủ yếu như sau:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2;
Sau đó, idx_index2
sẽ là khôn ngoan, vì đó là thứ được gọi là chỉ số che phủ ngăn chặn sự cần thiết phải tra cứu chính trở lại chỉ mục được nhóm (hoặc tìm kiếm RID trở lại heap). Định nghĩa chỉ mục không bao gồm đó sẽ chỉ bao gồm tất cả dữ liệu mà truy vấn cần.
Với đề xuất của bạn, nó sẽ rất phù hợp cho một truy vấn như sau:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
idx_index3
Đề xuất của bạn sẽ là một chỉ số bao trùm đáp ứng các tiêu chí tìm kiếm cho truy vấn trên.
Điểm tôi đang cố gắng hiểu, là trong một câu hỏi biệt lập như thế này, chúng ta không thể trả lời dứt khoát điều này. Tất cả phụ thuộc vào khối lượng công việc phổ biến và thường xuyên là gì. Tất nhiên, bạn luôn có thể xác định cả ba chỉ mục này để xử lý từng loại truy vấn mẫu, nhưng sau đó sẽ đặt câu hỏi về việc bảo trì sẽ được yêu cầu để giữ cho các chỉ mục này được cập nhật (nghĩ: CHERTN, CẬP NHẬT, XÓA). Đó là chi phí chung của các chỉ số.
Bạn cần mổ xẻ và đánh giá khối lượng công việc, và xác định nơi nào có lợi thế tốt nhất. Nếu truy vấn mẫu đầu tiên là phổ biến nhất cho đến nay được thực hiện hàng chục lần một giây và có một truy vấn rất không thường xuyên như truy vấn mẫu thứ ba, thì sẽ không có ý nghĩa làm mờ các trang cấp độ lá của chỉ mục với INCLUDE
cột nonkey. Tất cả phụ thuộc vào khối lượng công việc của bạn.
Nếu bạn hiểu các chiến lược lập chỉ mục thận trọng và bạn hiểu khối lượng công việc chung của mình, thì bằng cách áp dụng cả hai chiến lược đó, bạn sẽ có thể đưa ra lộ trình tốt nhất để thực hiện.