En una unión izquierda, ¿cuál es la diferencia entre tener un filtro en la ‘unión’ frente a una cláusula where?

Los resultados no son necesariamente los mismos .

Una combinación izquierda es una combinación externa, lo que significa que los resultados incluirán todas las filas de una de las fuentes (tablas, vistas, etc.), en este caso, la de la izquierda, incluso si no existe una fila coincidente en la otra fuente . Cuando la condición se coloca en la unión, los resultados pueden incluir filas para las que no se cumplió la condición de unión.

Por otro lado, cuando la condición se coloca en la cláusula where, todas las filas devueltas por la consulta definitivamente cumplirán con esa condición.

En cuanto al rendimiento, depende del sistema de base de datos que se utilice. Algunos de ellos pueden ejecutar cosas siempre en el mismo orden, y algunos pueden tener algún tipo de optimizador de consultas que en algunas situaciones puede decidir hacer las cosas de una manera diferente si “piensa” que puede mejorar el rendimiento, pero en tales casos , esas decisiones se basan en estimaciones, lo que significa que no siempre serán las mejores.

Editar:

Como se ha señalado en el comentario adjunto, mi respuesta no es correcta para una unión EXTERIOR, ya sea IZQUIERDA, DERECHA o COMPLETA. No sé si la información de la pregunta complementaria con los ejemplos de consulta se agregó después de responder o si simplemente no estaba rastreando la noche en que creé esta respuesta. En cualquier caso, el siguiente texto solo es válido cuando dos tablas están conectadas a una unión INNER.

Las filas devueltas serán las mismas independientemente de la ubicación de la condición. Supongo que su verdadera pregunta es si la base de datos procesará los dos de manera diferente y específicamente, es probable que desee saber cuál es más rápido. Las respuestas a esas preguntas, al menos en Oracle, que es la base de datos con la que estoy más familiarizado, son quizás, y no lo sé.

Me doy cuenta de que eso no es muy útil.

El problema es que la base de datos Oracle ya no tiene un conjunto fijo de reglas que utiliza para procesar consultas SQL. Oracle utiliza un Optimizador basado en costos, que desglosa una declaración SQL y luego desarrolla múltiples rutas potenciales para recuperar los datos que satisfarán la consulta. Luego calcula el “costo” de cada ruta y elige la que tenga el valor más bajo.

Dado que tener la condición en la cláusula JOIN vs WHERE producirá exactamente los mismos resultados, entonces esencialmente la consulta A con la condición en JOIN y la consulta B con la condición en la cláusula WHERE pueden usar exactamente las mismas rutas de datos para recuperar los datos.

No me he sentado y probado esto empíricamente en una base de datos Oracle (que es la * mejor * forma de determinar la respuesta), pero sospecho que ambas declaraciones SQL producirían el mismo plan de ejecución.

Todas las respuestas a este tipo de preguntas se pueden responder si conoce el orden de ejecución de la consulta SQL.

Como puede ver a continuación, ‘dónde’ viene después de ‘unirse’, que viene después de ‘on’

Primero, se crea toda la tabla de conjunto de resultados de unión en función de todos los registros coincidentes. Esto contendrá a Tom, Dick y Harry. Luego, la condición where se aplica a este conjunto de resultados.

El nombre de combinación = filtro Tom se aplica mientras se unen las dos tablas para obtener el conjunto de resultados final. En este caso, la unión filtra a Dick y Harry. Por lo tanto, la tabla de resultados solo contendrá registros para ‘Tom “siempre que haya registros coincidentes.

Técnicamente, el mismo resultado pero tiene que hacer una llamada dependiendo del tamaño de su tabla y el rendimiento de la consulta SQL.

DE

EN

UNIRSE

DÓNDE

AGRUPAR POR

CON CUBO o CON RODILLO

TENIENDO

SELECCIONAR

DISTINTO

ORDENAR POR

PARTE SUPERIOR

More Interesting

¿Existe alguna ocupación en la que le puedan pagar para tratar de comprender a las personas que no requieren un título?

Soy ingeniero civil estudiando en el último año. ¿Qué alcance exacto tengo en el gobierno indio?

¿Qué significa no tener una caminata cada año durante 10 años y no tener oppurtinitas para el cambio en TI? ¿Cómo llamas a esa persona?

¿Cuál es la forma más corta de ser autónomo en programación o en cualquier otro campo?

¿Cuál es la mejor manera de comenzar a ahorrar para la jubilación a los 30 años, cuando tienen un trabajo con bajos salarios y sin beneficios de jubilación?

Problema de carrera de ratas, soy estudiante de ingeniería final. No me gusta la ingeniería y voy a cursos de viajes y turismo. ¿Destruirá esto mi futuro?

Quiero ser gerente de producto. ¿Debo seguir trabajando en Google en un puesto que no sea PM, o pasar a un puesto de gerente de producto en otra empresa (como Yahoo o eBay)?

¿Cuál es el mejor recurso para el asesoramiento académico para alguien que no es un estudiante actual?

¿Será beneficioso hacer un MBA después de trabajar como ingeniero técnico en ventas en una empresa de bienes raíces después de B.Tech en ingeniería civil?

¿Debo ir a enseñar en un país del tercer mundo?

¿Cómo puedo convertirme en un programador de élite?

¿Cómo es que 'tener éxito' en un trabajo se traduce únicamente en dinero y conexiones?

¿Cuáles son las cosas necesarias para un estudiante de ingeniería mecánica de primer año?

¿Cuáles son los trabajos que puede hacer con un MBA?

¿Todavía es posible ganar mucho dinero en la industria creativa (moda, pintura, escultura, etc.)?