Điều này phụ thuộc vào những gì bạn có nghĩa là "tốt" và "xấu". Về cơ bản, bạn cần nhận ra rằng mọi chỉ mục bạn thêm vào sẽ tăng hiệu suất trên bất kỳ tìm kiếm nào theo cột đó (vì vậy việc thêm chỉ mục vào cột 'họ' của bảng người sẽ tăng hiệu suất trên các truy vấn có "nơi lastname =" trong đó) nhưng giảm hiệu suất ghi trên toàn bộ bảng.
Lý do cho điều này là khi bạn thêm hoặc cập nhật một hàng, nó phải thêm vào hoặc cập nhật cả bản thân bảng và mọi chỉ mục mà hàng đó là thành viên của. Vì vậy, nếu bạn có năm chỉ mục trên một bảng, mỗi lần bổ sung phải ghi vào sáu vị trí - năm chỉ mục và bảng - và một bản cập nhật có thể chạm đến sáu vị trí trong trường hợp xấu nhất.
Tạo chỉ mục là một hành động cân bằng sau đó giữa tốc độ truy vấn và tốc độ ghi. Trong một số trường hợp, chẳng hạn như một datamart chỉ được tải dữ liệu mỗi tuần một lần trong một công việc qua đêm nhưng được truy vấn hàng nghìn lần mỗi ngày, thì việc quá tải các chỉ mục và tăng tốc độ truy vấn càng nhiều càng tốt. Tuy nhiên, trong trường hợp các hệ thống xử lý giao dịch trực tuyến, bạn muốn thử và tìm sự cân bằng giữa chúng.
Vì vậy, tóm lại, hãy thêm chỉ mục vào các cột được sử dụng nhiều trong các truy vấn chọn lọc, nhưng cố gắng tránh thêm quá nhiều và vì vậy hãy thêm các cột được sử dụng nhiều nhất trước.
Sau đó là vấn đề kiểm tra tải để xem hiệu suất phản ứng như thế nào trong các điều kiện sản xuất và rất nhiều điều chỉnh để tìm ra sự cân bằng có thể kiểm soát được.