По принцип филтрите за избор могат да използват индекси на user_id
или activity_type_id
или и двете (в който и да е ред).
Операцията за подреждане може да може да използва филтър за created_at
.
Вероятно за тази заявка е съставен индекс на (user_id, activity_type_id)
ще даде най-добрия резултат, ако приемем, че MySQL действително може да го използва. Ако не успеете, вероятно ще бъде по-добре да индексирате user_id
отколкото activity_type_id
защото е вероятно да осигури по-добра селективност. Една от причините да мислим така е, че ще има 4 подсекции на индекса за сканиране, ако използва индекс на activity_type_id
, в сравнение само с един подсекция за сканиране, ако използва индекс на user_id
сам.
Опитът да се разчита на индекс за реда на сортиране вероятно ще означава пълно сканиране на таблица, така че е по-малко вероятно да бъде от полза. Не бих създал индекс на created_at
за поддържане на това запитване; може да има други запитвания, където би било от полза.