In generale, i filtri di selezione possono utilizzare indici su user_id
o activity_type_id
o entrambi (in entrambi gli ordini).
L'operazione di ordinazione potrebbe essere in grado di utilizzare un filtro su created_at
.
È probabile che per questa query, un indice composito su (user_id, activity_type_id)
darebbe il miglior risultato, supponendo che MySQL possa effettivamente utilizzarlo. In caso contrario, è probabile che sia meglio indicizzare user_id
di activity_type_id
perché è probabile che fornisca una migliore selettività. Un motivo per pensare che ci sarebbero 4 sottosezioni dell'indice da scansionare se utilizza un indice su activity_type_id
, rispetto a una sola sottosezione da scansionare se utilizza un indice su user_id
da solo.
È probabile che il tentativo di fare affidamento su un indice per l'ordinamento significhi una scansione completa della tabella, quindi è meno probabile che sia vantaggioso. Non creerei un indice su created_at
per supportare questa domanda; potrebbero esserci altre domande in cui sarebbe utile.