sql >> Base de Datos >  >> RDS >> Mysql

¿En qué orden se evalúan los JOIN de MySQL?

  1. USING (nombre de campo) es una forma abreviada de decir ON table1.fieldname =table2.fieldname.

  2. SQL no define el 'orden' en el que se realizan las UNIONES porque no es la naturaleza del lenguaje. Obviamente, se debe especificar un orden en la declaración, pero un INNER JOIN puede considerarse conmutativo:puede enumerarlos en cualquier orden y obtendrá los mismos resultados.

    Dicho esto, al construir un SELECT ... JOIN, particularmente uno que incluye LEFT JOIN, he encontrado que tiene sentido considerar el tercer JOIN como unir la nueva tabla a los resultados del primer JOIN, el cuarto JOIN como unir el resultados del segundo JOIN, y así sucesivamente.

    Más raramente, el orden especificado puede influir en el comportamiento del optimizador de consultas, debido a la forma en que influye en la heurística.

  3. No. La forma en que se ensambla la consulta requiere que tanto las empresas como los usuarios tengan un ID de empresa, los trabajos tienen un ID de usuario y un ID de trabajo y las cuentas de usuario tienen un ID de usuario. Sin embargo, solo una de las empresas o el usuario necesita un ID de usuario para que JOIN funcione.

  4. La cláusula WHERE está filtrando el resultado completo, es decir, todas las columnas JOINed, utilizando una columna proporcionada por la tabla de trabajos.