Làm sao để biết khi nào / nếu tôi có quá nhiều chỉ mục?


26

Chạy Microsoft SQL Server Profiler mọi lúc, sau đó, nó gợi ý cho tôi một loạt các chỉ mục và số liệu thống kê mới để tạo ("... 97% cải thiện ước tính ...").

Theo hiểu biết của tôi, mọi chỉ mục được thêm vào có thể làm cho một SELECTtruy vấn SQL nhanh hơn nhưng cũng có thể truy vấn UPDATEhoặc INSERTtruy vấn chậm hơn vì các chỉ mục phải được điều chỉnh.

Điều tôi băn khoăn là, khi nào tôi có "quá nhiều" chỉ số / thống kê?

Có thể không có câu trả lời rõ ràng về điều này nhưng một số quy tắc.



Cảm ơn bạn, @Nick. Tôi cẩn thận tìm kiếm Google và dba.se.com trước khi đăng câu hỏi của mình. Theo tôi, điều này khá không liên quan. Tôi không muốn biết liệu một chỉ mục có được yêu cầu hay không mà là làm thế nào để xác định khi quá nhiều chỉ mục thực hiện UPDATEINSERTtuyên bố quá chậm.
Uwe Keim

3
Bạn đã đọc câu trả lời ở đó? Câu trả lời được chấp nhận, ví dụ, liên kết đến một số tập lệnh phân tích có thể giúp bạn xác định các chỉ mục không sử dụng cần được loại bỏ. Bạn có thể thấy rằng hữu ích trong việc trả lời câu hỏi của bạn khi bạn có "quá nhiều" chỉ mục.
Nick Chammas

2
gbn

Câu trả lời:


24

Hồ sơ tải của bạn là yếu tố quan trọng nhất để trả lời câu hỏi này.

  • Nếu tải của bạn ở mức chuyên sâu, bạn muốn các chỉ mục đáp ứng các truy vấn nặng nhất hoặc thường xuyên nhất của bạn.

  • Nếu tải của bạn là viết chuyên sâu, chỉ mục cẩn thận. Lập chỉ mục để đáp ứng tìm kiếm một nhu cầu CẬP NHẬT, ví dụ, cũng như một hoặc hai CHỌN đắt nhất của bạn.

  • Nếu tải của bạn là một OLAP, hãy lập chỉ mục một cách tiết kiệm vì dù sao bạn cũng sẽ quét các bảng mục tiêu.

Làm thế nào để bạn biết bạn có quá nhiều chỉ số?

  • Khi bạn có thể thấy rằng một số trong số chúng không được sử dụng bởi bất kỳ truy vấn nào.

  • Một XÓA, CẬP NHẬT hoặc CHỨNG thường xuyên hiển thị một kế hoạch truy vấn liên quan đến một số thay đổi chỉ mục đắt tiền (nghĩa là chèn , cập nhật hoặc xóa chỉ mục không bao gồm ). Sử dụng phán đoán của bạn để xác định xem hình phạt đối với các tuyên bố DML đó có xứng đáng với mức tăng bạn nhận được từ các chỉ mục phải được cập nhật hay không.


8

Nếu bạn có các chỉ mục đang được duy trì nhưng không bao giờ được sử dụng (hoặc hiếm khi được sử dụng) thì bạn phải có nhiều chỉ mục. Nếu tất cả các chỉ mục của bạn đang được sử dụng để cải thiện hiệu suất của người dùng thì bạn không phải nhiều.


Tôi có thể đề nghị thay đổi hai lần xuất hiện của " thành " thành " quá không , vì tôi không thể chỉnh sửa chúng vì chỉnh sửa của tôi sẽ cần thay đổi tối thiểu 6 ký tự?
Uwe Keim
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.