Cuando empecé a escribir consultas de bases de datos no sabía la palabra clave JOIN y, naturalmente, sin embargo, yo sólo extendí lo que ya sabía y escribió consultas como esta:¿Hay algún problema con las combinaciones que no utilizan la palabra clave JOIN en SQL o MySQL?
SELECT a.someRow, b.someRow
FROM tableA AS a, tableB AS b
WHERE a.ID=b.ID AND b.ID= $someVar
Ahora que sé que esto es lo mismo que una INNER JOIN Encuentro todas estas consultas en mi código y me pregunto si debería volver a escribirlas. ¿Hay algo de mal olor en ellos o están bien?
EDIT:
Mi resumen respuesta: No hay nada malo con esta consulta pero usando las palabras clave más probablemente hará que el código sea más legible/mantenible.
Mi conclusión: No cambiaré mis consultas anteriores pero corregiré mi estilo de escritura y usaré las palabras clave en el futuro.
¡GRACIAS por sus respuestas!
El estándar ANSI SQL cambia con el tiempo. La capacidad de expresar uniones externas es anterior a la introducción de la sintaxis de la cláusula JOIN. La sintaxis de unión proporciona, de paso, una oportunidad para indexar y unir sugerencias. –
Su resumen es incorrecto, por lo que su conclusión es mala. La diferencia en las consultas es que la siguiente respuesta llevará a cabo la cláusula where en un subconjunto de datos mucho más pequeño. El rendimiento es mucho mayor y, por lo tanto, debería considerar reescribir las consultas utilizando combinaciones internas donde pueda. – achinda99
La respuesta aceptada por DanielSpiewak es simplemente incorrecta. Están fantaseando con la implementación. Las optimizaciones para las uniones no externas de a, en y donde * sintaxis * son triviales. Para MySQL, vea específicamente la documentación oficial re [join optimization] (https://dev.mysql.com/doc/refman/5.7/en/left-join-optimization.htm) y otros aspectos de la optimización). – philipxy