Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Em que ordem os JOINs do MySQL são avaliados?


  1. USING (nomedocampo) é uma forma abreviada de dizer ON table1.fieldname =table2.fieldname.

  2. SQL não define a 'ordem' em que JOINS são feitos porque não é a natureza da linguagem. Obviamente, uma ordem deve ser especificada na instrução, mas um INNER JOIN pode ser considerado comutativo:você pode listá-los em qualquer ordem e obterá os mesmos resultados.

    Dito isso, ao construir um SELECT ... JOIN, particularmente um que inclui LEFT JOINs, descobri que faz sentido considerar o terceiro JOIN como unindo a nova tabela aos resultados do primeiro JOIN, o quarto JOIN como unindo o resultados do segundo JOIN, e assim por diante.

    Mais raramente, a ordem especificada pode influenciar o comportamento do otimizador de consultas, devido à forma como influencia as heurísticas.

  3. Não. A forma como a consulta é montada, requer que empresas e usuários tenham um companyid, jobs tenha um userid e um jobid e useraccounts tenha um userid. No entanto, apenas uma das empresas ou o usuário precisa de um ID de usuário para que o JOIN funcione.

  4. A cláusula WHERE está filtrando todo o resultado -- ou seja, todas as colunas JOINed -- usando uma coluna fornecida pela tabela de jobs.