Mysql
 sql >> Database >  >> RDS >> Mysql

Cosa dovrebbe essere indicizzato per migliorare le prestazioni?

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.