/ / ¿Son INNER JOIN y OUTER JOIN necesarios? - sql, base de datos, unirse

¿Son necesarios INNER JOIN y OUTER JOIN? - sql, base de datos, unirse

Entiendo que cualquier unión se puede hacer con una unión CRUZADA y una cláusula WHERE.

Hice algunos experimentos y parece que colocar el predicado de igualdad dentro de la cláusula where o como el parámetro de una combinación interna produce el mismo resultado con el mismo rendimiento.

Además, el uso de uniones internas no guarda ningún tipo de escritura, ya que aún se debe especificar el predicado de unión.

Supongo que lo mismo es cierto para los diversos tipos de uniones externas. Simplemente especifique que los valores pueden ser nulos o no nulos.

¿Puedo ir solo con uniones cruzadas?

Respuestas

10 por respuesta № 1

No se puede hacer ninguna unión con una unión CRUZADA y una cláusula WHERE. Cada una de las cruces de unión, interna y externa tiene su propio significado lógico.

  1. Una unión cruzada solo aplica una fase: el producto cartesiano.
  2. Una unión interna aplica dos fases: Producto Cartesiano y Filtro.
  3. Una unión externa aplica tres fases: Producto cartesiano, Filtro y Agregar filas externas.

Un aspecto confuso de las consultas que contienen una cláusula OUTER JOIN es si se debe especificar una expresión lógica en el filtro ON o en el filtro WHERE. La principal diferencia entre los dos es que ON se aplica antes de agregar filas exteriores , mientras Donde se aplica despues. La eliminación de una fila de la tabla conservada (especificada como exterior izquierdo o derecho) por el filtro ENCENDIDO no es definitiva porque se volverá a agregar; una eliminación de una fila por el filtro WHERE, por el contrario, es definitiva.

Esta diferencia lógica entre las cláusulas ON y WHERE existe solo cuando se utiliza un exterior unirse. Cuando utiliza una combinación interna, no importa dónde especifique sus expresiones lógicas en la cláusula ON con el operador de la tabla de combinación interna o en la cláusula Where con el operador de la tabla de combinación cruzada.

¡¡¡Espero que esto ayude!!!


1 para la respuesta № 2

La respuesta es que el rendimiento no puede verse afectado,sin embargo, la legibilidad y la claridad del código se ven obstaculizadas cuando hay desarrolladores experimentados que buscan combinaciones cruzadas cuando en realidad son combinaciones internas. Aparte de eso, es una cuestión de preferencia personal.


0 para la respuesta № 3

Usted tiene la mitad de la razón en su pregunta. Has dicho que has probado y comparado JOINs y producto de Dekart. Y el resultado que obtuviste es que son iguales, sin embargo, hace aproximadamente un año hice la misma prueba en la base de datos MySQL y JOINs era mucho más rápido. Esto se debe a que SQL standart indica cómo se debe implementar la operación de unión y que la salida del producto Dekart debe ser la misma que INNER JOIN.

Por lo tanto, mi consejo es usar una forma estándar para escribir consultas debido a algunas razones:

  1. Las consultas que funcionan bien en DBMS (sistema de administración de base de datos) pueden no funcionar tan bien en otro.
  2. Es posible que las versiones anteriores del mismo DBMS no optimicen el producto Dekart como este último.
  3. Y probablemente lo más importante. Estructura de consulta con JOINs es mucho más fácil de leer y entender que está haciendo, por lo que es más fácil modificar la consulta.

En general, mi consejo es utilizar JOINs en cambio.