Chúng tôi có một cơ sở dữ liệu rất lớn với hàng trăm chỉ mục không được sử dụng theo thống kê của DMV, đã được tích lũy kể từ khi máy chủ được khởi động lại lần cuối vào tháng Bảy. Một trong những DBA của chúng tôi đã đưa ra những tuyên bố thận trọng sau đây, điều này không có ý nghĩa với tôi:
- Trước khi loại bỏ một chỉ mục, chúng ta cần đảm bảo nếu nó không thực thi một ràng buộc duy nhất, vì trình tối ưu hóa truy vấn có thể cần chỉ mục này tồn tại.
- Bất cứ khi nào một Chỉ mục được tạo, các số liệu thống kê liên quan đến chỉ mục đó cũng được tạo trong SQL Server. Một truy vấn có thể không sử dụng chỉ mục nhưng nó có thể đang sử dụng số liệu thống kê của nó. Vì vậy, chúng tôi có thể gặp phải một tình huống, sau khi bỏ chỉ mục, hiệu năng truy vấn cụ thể trở nên rất tệ. SQL Server không giữ số liệu thống kê sử dụng. Mặc dù chúng tôi đã bật tính năng Số liệu tự động tạo số liệu thống kê trên cơ sở dữ liệu của chúng tôi, tôi không biết tất cả các tham số phải được đáp ứng trong nội bộ trước khi trình tối ưu hóa truy vấn sẽ tạo ra số liệu thống kê còn thiếu.
Đối với # 1, đối với tôi, SQL Server thực sự sẽ tìm kiếm chỉ mục để xác định tính duy nhất trước khi thực hiện chèn / cập nhật và do đó, chỉ mục sẽ không hiển thị là không được sử dụng.
Về # 2, điều này thực sự có thể?
Nhân tiện, khi tôi nói một chỉ mục không được sử dụng, tôi có nghĩa là không tìm kiếm và không quét.