Selon la documentation MySQL concernant Optimizing Queries With Explain
:Optimisation des requêtes MySQL: Est-il toujours possible d'optimiser une requête afin qu'il n'utilise pas « ALL »
* ALL: Un scan de table est fait pour chaque combinaison des lignes des tables précédentes. Ce n'est normalement pas bon si la table est la première table non marquée const, et généralement très mauvaise dans tous les autres cas. Normalement, vous pouvez éviter ALL en ajoutant des index qui permettent la récupération de ligne à partir de la table en fonction des valeurs constantes ou des valeurs de colonnes des tables précédentes.
Est-ce que cela signifie que toute requête qui utilise peut tous être optimisé de sorte qu'il ne soit plus fait un scan table complète? En d'autres termes, en ajoutant les index corrects à la table, est-il possible d'éviter toujours d'utiliser ALL? Ou y a-t-il des cas où TOUS est inévitable, quels que soient les index que vous ajoutez?
Comment récupéreriez-vous toutes les colonnes, si nécessaire? soit en utilisant * (ALL) soit en nommant chaque colonne séparément. ne change rien. – dusoft
Ah. Pour clarifier: Supposons que la requête tente d'extraire 1 ou 2 lignes, pas toutes les lignes de la table entière. – Runcible