Thường thì tôi cần chạy các truy vấn đối với các bảng lớn không có chỉ mục đúng. Vì vậy, tôi yêu cầu DBA tạo ra chỉ số như vậy. Điều đầu tiên anh ta làm là nhìn vào số liệu thống kê bảng và xem kích thước không gian chỉ mục.
Thường thì anh ta sẽ bảo tôi tìm giải pháp thay thế vì "chỉ số đã lớn hơn bảng". Anh ấy cảm thấy chỉ số phải nhỏ hơn dữ liệu, bởi vì, anh ấy nói với tôi "bạn đã bao giờ nhìn thấy chỉ mục trong một cuốn sách chưa? Nó nhỏ hơn nhiều so với chính cuốn sách đó và đó là cách chỉ mục bảng".
Tôi không cảm thấy triết lý của anh ấy là đúng, nhưng tôi không thể thách thức anh ấy vì anh ấy là một DBA chính và tôi là một nhà phát triển. Tôi cảm thấy nếu một truy vấn cần một chỉ mục, thì chỉ mục đó sẽ được tạo, thay vì tìm "cách giải quyết" chỉ tạo ra các SP không thể đọc được và không thể nhầm lẫn.
Tôi chỉ chọn các cột cần thiết. Vấn đề là tôi đang lọc theo ngày nên công cụ sẽ nhất thiết phải quét bảng để khớp với các cột. Truy vấn chạy một lần một ngày, vào ban đêm, để thu thập số liệu thống kê, nhưng phải mất 15 phút để chạy (chúng tôi có một quy tắc khó và nhanh khác: Không có thủ tục nào phải mất hơn 3 phút).
DBA cho tôi thấy số liệu thống kê chỉ số. Có khoảng 10 chỉ mục trên bảng đó, trong đó chỉ có 6 chỉ số được sử dụng (số liệu thống kê cho thấy không có lần truy cập nào đối với 4 trong số chúng). Đây là một hệ thống lớn với hơn 20 nhà phát triển tham gia. Các chỉ mục được tạo ra vì bất kỳ lý do gì, và có lẽ không còn được sử dụng.
Chúng tôi được yêu cầu hỗ trợ SQL Server 2008, vì đó là những gì DB thử nghiệm chạy trên đó. Nhưng các khách hàng là tất cả vào năm 2014 và 2016.