Một chỉ mục trên cột dấu thời gian và userid sẽ hữu ích. Bạn cần có thể đọc đầu ra của Tuyên bố GIẢI THÍCH.
Đi tới MySQL và thực hiện như sau:
EXPLAIN SELECT timestamp, username, [a few more] FROM log
WHERE timestamp BETWEEN '2012-03-30 08:00:00' AND '2012-03-30 16:00:00'
AND username='XX'
Điều này cho bạn thấy kế hoạch mà MySQL sử dụng để thực hiện truy vấn. Sẽ có cột được gọi là khóa. Điều này cho biết chỉ mục nào MySQL đang sử dụng trong truy vấn. Tôi nghi ngờ bạn sẽ thấy TẤT CẢ ở đó có nghĩa là MySQL đang quét bảng từ trên xuống dưới phù hợp với mọi hàng với mệnh đề where của bạn. Bây giờ, hãy tạo một chỉ mục trên các cột dấu thời gian và userid. Chạy lại câu lệnh EXPLAIN. Bạn sẽ thấy chỉ mục mà bạn đã tạo trong cột chính.
Nếu MySQL sử dụng chỉ mục thì truy vấn của bạn sẽ nhanh hơn đáng kể. Chỉ cần nhớ không để quá chỉ số. Các chỉ mục làm cho việc chèn, cập nhật và xóa chậm hơn. Khi bạn chèn một hàng mới vào bảng và có ba chỉ mục trên bảng thì hàng mới phải ghi 3 giá trị vào ba chỉ mục khác nhau. Vì vậy, nó là một con dao hai lưỡi.