Mysql
 sql >> Database >  >> RDS >> Mysql

In quale ordine vengono valutati i MySQL JOIN?

  1. USING (nomecampo) è un modo abbreviato per dire ON table1.fieldname =table2.fieldname.

  2. SQL non definisce l '"ordine" in cui vengono eseguiti i JOINS perché non è la natura del linguaggio. Ovviamente un ordine deve essere specificato nell'istruzione, ma un INNER JOIN può essere considerato commutativo:puoi elencarli in qualsiasi ordine e otterrai gli stessi risultati.

    Detto questo, quando si costruisce un SELECT ... JOIN, in particolare uno che include LEFT JOIN, ho trovato che ha senso considerare il terzo JOIN come unire la nuova tabella ai risultati del primo JOIN, il quarto JOIN come unire il risultati del secondo JOIN e così via.

    Più raramente, l'ordine specificato può influenzare il comportamento di Query Optimizer, a causa del modo in cui influenza l'euristica.

  3. No. Il modo in cui la query viene assemblata, richiede che le aziende e gli utenti abbiano entrambi un companyid, i job abbiano un userid e un jobid e gli useraccounts abbiano un userid. Tuttavia, solo una delle società o l'utente ha bisogno di un ID utente affinché JOIN funzioni.

  4. La clausola WHERE sta filtrando l'intero risultato, ovvero tutte le colonne JOINed, utilizzando una colonna fornita dalla tabella dei lavori.