Nói chung, các bộ lọc lựa chọn có thể sử dụng các chỉ mục trên user_id
hoặc activity_type_id
hoặc cả hai (theo một trong hai thứ tự).
Thao tác đặt hàng có thể sử dụng bộ lọc trên created_at
.
Có thể là đối với truy vấn này, một chỉ mục tổng hợp trên (user_id, activity_type_id)
sẽ cho kết quả tốt nhất, giả sử rằng MySQL thực sự có thể sử dụng nó. Nếu không đạt được điều đó, tốt hơn là nên lập chỉ mục user_id
hơn activity_type_id
bởi vì nó có khả năng cung cấp khả năng chọn lọc tốt hơn. Một lý do để nghĩ rằng sẽ có 4 phần phụ của chỉ mục để quét nếu nó sử dụng chỉ mục trên activity_type_id
, được so sánh với chỉ một tiểu mục để quét nếu nó sử dụng chỉ mục trên user_id
một mình.
Cố gắng dựa vào một chỉ mục cho thứ tự sắp xếp có thể đồng nghĩa với việc quét toàn bộ bảng, vì vậy ít có khả năng có lợi hơn. Tôi sẽ không tạo chỉ mục trên created_at
để hỗ trợ truy vấn này; có thể có các truy vấn khác mà nó sẽ có lợi.