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

¿Diferencia entre estos dos enfoques de tabla de unión?

Aparte de la sintaxis, para el fragmento pequeño, funcionan exactamente igual. Pero si es posible, siempre escribe nuevas consultas usando ANSI-JOINs.

En cuanto a la semántica, la notación de coma se usa para producir un producto CARTESIANO entre dos tablas, lo que significa producir una matriz de todos los registros de la tabla A con todos los registros de la tabla B, por lo que dos tablas con 4 y 6 registros respectivamente producen 24 registros. Usando la cláusula WHERE, puede elegir las filas que realmente desea de este producto cartesiano. Sin embargo, MySQL en realidad no sigue y crea esta enorme matriz, pero semánticamente esto es lo que significa.

Una sintaxis JOIN es el estándar ANSI que define más claramente cómo interactúan las tablas. Poniendo el ON cláusula junto a JOIN , deja claro lo que une las dos tablas.

Funcionalmente, realizarán lo mismo para sus dos consultas. La diferencia viene cuando comienzas a usar otro [OUTER] ÚNETE tipos.

Específicamente para MySQL, la notación de coma tiene una diferencia

STRAIGHT_JOIN es similar a JOIN, excepto que la tabla de la izquierda siempre se lee antes que la tabla de la derecha. Esto se puede usar para aquellos (pocos) casos en los que el optimizador de unión coloca las tablas en el orden incorrecto.

Sin embargo, no sería prudente contar con esta diferencia.