Nói chung, chiến lược lập chỉ mục của tôi sẽ giống như thế này (hiện tại tôi đang sử dụng SQL Server độc quyền - điều chỉnh cho phù hợp với hệ thống cơ sở dữ liệu của riêng bạn nếu cần):
-
chọn một tốt khóa cụm - không phải là GUID, không phải là
VARCHAR(250)
hoặc cái gì đó - một tốt khóa cụm là hẹp, duy nhất, ổn định, ngày càng tăng - một cái gì đó giống như mộtINT IDENTITY
là hoàn hảo. Đặt khóa này làm khóa chính nhóm của bạn -> cung cấp cho bạn chỉ mục đầu tiên của bạn trên bảng -
đối với bất kỳ cột nào đang được sử dụng làm khóa ngoại vào một bảng khác - hãy thêm chỉ mục. Nó có thể là một chỉ mục cột đơn - hoặc nó có thể là một chỉ mục kết hợp - bất cứ thứ gì phù hợp nhất với trường hợp của bạn. Điều quan trọng là cột khóa ngoại phải là đầu tiên trong chỉ mục đó (nếu bạn đang sử dụng chỉ mục ghép) - nếu không, lợi ích của
JOIN
của hoặc để kiểm tra tính toàn vẹn của tham chiếu sẽ không khả dụng với hệ thống của bạn
Và đó là nó cho bây giờ.
Sau đó:chạy hệ thống của bạn - quan sát và đo lường - thiết lập đường cơ sở. Ứng dụng có đủ nhanh không? Nếu có -> bạn đã hoàn thành - hãy về nhà và tận hưởng thời gian rảnh rỗi.
Nếu không:thì hãy bắt đầu thu thập dữ liệu và các dấu hiệu về lý do tại sao ứng dụng không đủ nhanh. Nhìn vào v.d. những thứ như DMV trong SQL Server cho bạn biết về các truy vấn hoạt động kém nhất hoặc DMV chỉ mục bị thiếu . Phân tích những. Xem những gì bạn có thể cải thiện. Thêm một chỉ mục tại một thời điểm và một lần nữa:quan sát, đo lường, so sánh với đường cơ sở của bạn.
Nếu bạn có cải thiện -> để nguyên chỉ số đó và số đo này là đường cơ sở mới của bạn. Rửa sạch và lặp lại cho đến khi bạn (và người dùng của bạn) hài lòng với hiệu suất của ứng dụng (và sau đó về nhà và tận hưởng thời gian nghỉ ngơi của bạn).
Lập chỉ mục quá mức trong SQL Server có thể tệ hơn hơn là không có bất kỳ chỉ mục nào. Đừng bắt đầu với quá nhiều chỉ số để bắt đầu! Chỉ thiết lập tốt PK nhóm và các chỉ số không phân biệt khóa ngoại - chỉ có vậy - sau đó quan sát, đo lường, tối ưu hóa và lặp lại chu trình đó.