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

Clarification de l'ordre de jointure pour la création de tables temporaires

  1. Il fait référence à l'ordre dans lequel l'optimiseur les évalue (join queue). L'optimiseur peut même ne pas être au courant de l'ordre des tables dans votre instruction sql.

  2. Non, cela ne contredit pas ce qui a été écrit en #3, puisque la réponse écrit explicitement (c'est moi qui souligne):

Le résultat et la performance sont deux choses différentes. En fait, il y a un commentaire positif à la réponse disant que

  1. Vous pouvez dire à l'optimiseur quelle table traiter en premier en utilisant straight_join :

Cependant, vous devez faire attention à cela car vous liez la main de l'optimiseur. Voir ce SO sujet sur les avantages et les inconvénients de straight_join.

Nombre d'enregistrements, où critères, index - ils jouent tous leur rôle dans la décision de l'optimiseur de l'ordre de traitement des tables. Il n'y a pas de solution miracle, vous devez jouer un peu et vous pouvez probablement tromper l'optimiseur pour changer l'ordre des tables.