sql >> Databáze >  >> RDS >> Mysql

V jakém pořadí jsou MySQL JOINy ​​vyhodnocovány?

  1. USING (fieldname) je zkrácený způsob, jak říci ON table1.fieldname =table2.fieldname.

  2. SQL nedefinuje 'pořadí', ve kterém se JOINS provádějí, protože to není povaha jazyka. Je zřejmé, že v prohlášení musí být uvedeno pořadí, ale INNER JOIN lze považovat za komutativní:můžete je uvést v libovolném pořadí a získáte stejné výsledky.

    To znamená, že při sestavování SELECT ... JOIN, zejména takového, který obsahuje LEFT JOINy, jsem zjistil, že dává smysl považovat třetí JOIN za připojení nové tabulky k výsledkům prvního JOIN, čtvrtý JOIN za připojení k výsledky druhého JOIN a tak dále.

    Vzácněji může zadané pořadí ovlivnit chování optimalizátoru dotazů kvůli způsobu, jakým ovlivňuje heuristiku.

  3. Ne. Způsob, jakým je dotaz sestaven, vyžaduje, aby společnosti i uživatelé měli ID společnosti, úlohy mají ID uživatele a ID úlohy a uživatelské účty mají ID uživatele. Pouze jedna ze společností nebo uživatel potřebuje ID uživatele, aby funkce JOIN fungovala.

  4. Klauzule WHERE filtruje celý výsledek – tedy všechny sloupce JOINed – pomocí sloupce poskytnutého tabulkou úloh.



  1. SQL Server 2016:Vytvořte tabulku ze skriptu SQL

  2. Metoda nebyla ve třídě nalezena

  3. Výběr a konfigurace hardwaru pro SQL Server 2016 Standard Edition

  4. Jak jedinečně uložit registrační ID GCM do MySQL