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

Clause WHERE sur la jointure ajoutant 4 secondes au temps d'exécution

L'explication la plus probable est que MySQL choisit un plan d'exécution différent lorsque vous ajoutez ce prédicat.

Vous pouvez comparer la sortie EXPLAIN des deux requêtes, celle avec le journey_day.day=3 prédicat et celui sans.

J'oserais supposer que MySQL choisit un ordre de jointure différent, et MySQL choisit d'utiliser un index qui a day comme colonne principale lorsque le prédicat est inclus. Et cela entraîne probablement l'accès et l'examen de beaucoup plus de lignes, ou peut-être que MySQL génère un grand ensemble intermédiaire avant de filtrer les lignes.