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

Pourquoi un index peut-il rendre une requête très lente ?

Parce que vous devez toujours lire toutes les données de l'index + du fichier de données. Puisque vous n'utilisez aucun where condition - vous aurez toujours le plan de requête, qui accède à toutes les données, ligne par ligne et vous ne pouvez rien faire avec cela.

Si les performances sont importantes pour cette requête et qu'elle est effectuée souvent, je suggérerais de mettre en cache les résultats dans une table temporaire et de la mettre à jour toutes les heures (quotidiennement, etc.).

Pourquoi cela devient plus lent :parce que dans l'index, les données sont déjà triées et lorsque mysql calcule le coût d'exécution de la requête, il pense qu'il sera préférable d'utiliser des données déjà triées, puis de les regrouper, puis de calculer des agrégats. Mais ce n'est pas dans ce cas.