Ogólnie filtry wyboru mogą używać indeksów w user_id
lub activity_type_id
lub obie (w dowolnej kolejności).
Operacja zamawiania może być w stanie użyć filtra na created_at
.
Jest prawdopodobne, że dla tego zapytania indeks złożony na (user_id, activity_type_id)
dałby najlepszy wynik, zakładając, że MySQL może z niego skorzystać. Jeśli to się nie uda, prawdopodobnie lepiej będzie zindeksować user_id
niż activity_type_id
ponieważ prawdopodobnie zapewni lepszą selektywność. Jednym z powodów, dla których należy sądzić, że będą 4 podsekcje indeksu do przeskanowania, jeśli używa on indeksu activity_type_id
, w porównaniu z tylko jedną podsekcją do przeskanowania, jeśli używa indeksu w user_id
sam.
Próba polegania na indeksie dla porządku sortowania prawdopodobnie oznacza pełne skanowanie tabeli, więc jest mniej prawdopodobne, aby była korzystna. Nie utworzyłbym indeksu na created_at
wesprzeć to zapytanie; mogą pojawić się inne zapytania, w których byłoby to korzystne.