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

Dans quel ordre les JOIN MySQL sont-ils évalués ?

  1. USING (nomduchamp) est une manière abrégée de dire ON table1.nomduchamp =table2.nomduchamp.

  2. SQL ne définit pas "l'ordre" dans lequel les JOINS sont effectués car ce n'est pas la nature du langage. Évidemment, un ordre doit être spécifié dans l'instruction, mais un INNER JOIN peut être considéré comme commutatif :vous pouvez les lister dans n'importe quel ordre et vous obtiendrez les mêmes résultats.

    Cela dit, lors de la construction d'un SELECT ... JOIN, en particulier un qui inclut des LEFT JOIN, j'ai trouvé qu'il était logique de considérer le troisième JOIN comme joignant la nouvelle table aux résultats du premier JOIN, le quatrième JOIN comme joignant le résultats du deuxième JOIN, et ainsi de suite.

    Plus rarement, l'ordre spécifié peut influencer le comportement de l'optimiseur de requête, en raison de la façon dont il influence l'heuristique.

  3. Non. La façon dont la requête est assemblée nécessite que les entreprises et les utilisateurs aient tous deux un identifiant d'entreprise, que les emplois aient un identifiant d'utilisateur et un identifiant de travail et que les comptes d'utilisateurs aient un identifiant d'utilisateur. Cependant, une seule des sociétés ou l'utilisateur a besoin d'un ID utilisateur pour que le JOIN fonctionne.

  4. La clause WHERE filtre l'ensemble du résultat -- c'est-à-dire toutes les colonnes JOINées -- en utilisant une colonne fournie par la table jobs.