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

MySQL et ensemble imbriqué :JOIN lent (n'utilisant pas d'index)

Ah, ça m'est venu à l'esprit.

Puisque vous demandez tout ce qui se trouve dans la table, mysql décide d'utiliser une analyse complète de la table à la place, car il la juge plus efficace.

Afin d'obtenir une certaine utilisation des clés, ajoutez des filtres pour restreindre la recherche de chaque ligne dans toutes les tables de toute façon.

Mise à jour de la réponse :

Votre deuxième requête n'a pas de sens. Il vous reste à rejoindre lca mais vous avez un filtre dedans, cela annule la jointure gauche par elle-même. Vous recherchez également des données dans la dernière étape de la requête, ce qui signifie que vous devrez parcourir l'ensemble de lt, lc et lca afin de trouver vos données. De plus, vous n'avez pas d'index avec le "type" de colonne le plus à gauche sur les emplacements, vous avez donc toujours besoin d'une analyse complète de la table pour trouver vos données.

Si vous aviez des exemples de données et des exemples de ce que vous essayez de réaliser, il serait peut-être plus facile de vous aider.