Mysql
 sql >> Base de données >  >> RDS >> Mysql

Que faut-il indexer pour améliorer les performances ?

En général, les filtres de sélection peuvent utiliser des index sur user_id ou activity_type_id ou les deux (dans n'importe quel ordre).

L'opération de tri peut être en mesure d'utiliser un filtre sur created_at .

Il est probable que pour cette requête, un index composite sur (user_id, activity_type_id) donnerait le meilleur résultat, en supposant que MySQL puisse réellement l'utiliser. A défaut, il est probablement préférable d'indexer user_id que activity_type_id car il est susceptible d'offrir une meilleure sélectivité. Une des raisons de penser cela est qu'il y aurait 4 sous-sections de l'index à analyser s'il utilise un index sur activity_type_id , par rapport à une seule sous-section à analyser si elle utilise un index sur user_id seul.

Essayer de s'appuyer sur un index pour l'ordre de tri est susceptible de signifier une analyse complète de la table, il est donc moins susceptible d'être bénéfique. Je ne créerais pas d'index sur created_at pour prendre en charge cette requête ; il pourrait y avoir d'autres requêtes où cela serait bénéfique.