Lập chỉ mục những gì có vẻ hợp lý nhất (hy vọng điều đó phải rõ ràng, ví dụ:cột ID khách hàng trong bảng KHÁCH HÀNG).
Sau đó, chạy ứng dụng của bạn và thu thập số liệu thống kê định kỳ để xem cơ sở dữ liệu đang hoạt động như thế nào. RUNSTATS trên DB2 là một ví dụ, tôi hy vọng MySQL có một công cụ tương tự.
Khi bạn tìm thấy một số truy vấn đang chạy thực hiện quét toàn bộ bảng (hoặc mất quá nhiều thời gian vì những lý do khác), hãy và chỉ sau đó , bạn có nên thêm nhiều chỉ mục hơn không. Sẽ không tốt chút nào khi tối ưu hóa truy vấn mỗi tháng một lần chạy vào lúc nửa đêm để nó có thể kết thúc lúc 12:05 thay vì 12:07. Tuy nhiên, đó là một cải tiến lớn khi giảm truy vấn gặp khách hàng từ 5 giây xuống còn 2 giây (điều đó vẫn còn quá chậm, nếu có thể thì các truy vấn đối mặt với khách hàng sẽ là dưới giây).
Nhiều chỉ mục hơn có xu hướng làm chậm quá trình chèn và tăng tốc độ truy vấn. Vì vậy, nó luôn luôn là một hành động cân bằng. Đó là lý do tại sao bạn chỉ thêm các chỉ mục trong phản hồi cụ thể cho một vấn đề. Bất kỳ điều gì khác đều là tối ưu hóa quá sớm và nên tránh.
Ngoài ra, hãy truy cập lại các chỉ mục bạn đã có theo định kỳ để xem chúng có còn cần thiết hay không. Có thể là các truy vấn khiến bạn thêm các chỉ mục đó không còn chạy đủ thường xuyên để đảm bảo điều đó.
Thành thật mà nói, tôi không tin rằng việc lập chỉ mục ba cột trên một bảng sẽ khiến bạn gặp khó khăn trừ khi bạn có kế hoạch lưu trữ số lượng hàng thực sự lớn :-) - lập chỉ mục khá hiệu quả.
Sau khi bạn chỉnh sửa, trạng thái:
Câu trả lời của tôi là 200 bản ghi mỗi ngày là một giá trị cực kỳ nhỏ đối với cơ sở dữ liệu, bạn chắc chắn sẽ không phải lo lắng gì về ba chỉ mục đó.
Chỉ trong tuần này, tôi đã nhập số ngày giao dịch vào một trong các bảng cơ sở dữ liệu của chúng tôi tại nơi làm việc và nó chứa 2,1 triệu bản ghi (chúng tôi nhận được ít nhất một giao dịch mỗi giây trong cả ngày từ 25 máy riêng biệt). Và nó có bốn khóa tổng hợp riêng biệt, có phần chuyên sâu hơn ba khóa riêng lẻ của bạn.
Bây giờ được cấp phép, đó là trên cơ sở dữ liệu DB2 nhưng tôi không thể tưởng tượng được IBM lại như vậy tốt hơn nhiều so với những người MySQL mà MySQL chỉ có thể xử lý ít hơn 0,01% tải DB2.