Published on

November 25, 2016

Comprendiendo las uniones de SQL Server: LEFT OUTER vs RIGHT OUTER

Cuando trabajas con SQL Server, es posible que te encuentres con diferentes tipos de uniones que te permiten combinar datos de varias tablas. Una de estas uniones es la unión RIGHT OUTER, que se utiliza menos en comparación con su contraparte, la unión LEFT OUTER.

Echemos un vistazo a la diferencia entre estos dos tipos de uniones y por qué generalmente se recomienda evitar el uso de uniones RIGHT OUTER siempre que sea posible.

El objetivo principal de una unión es combinar filas de dos o más tablas en función de una columna relacionada entre ellas. En una unión LEFT OUTER, se incluyen todas las filas de la tabla izquierda en el conjunto de resultados, junto con las filas coincidentes de la tabla derecha. Por otro lado, en una unión RIGHT OUTER, se incluyen todas las filas de la tabla derecha, junto con las filas coincidentes de la tabla izquierda.

Aunque ambos tipos de uniones pueden lograr el mismo resultado, la elección entre ellos puede tener un impacto en la legibilidad y mantenibilidad de tus consultas SQL.

Considera el siguiente ejemplo:

SELECT s.CustomerName, pp.FullName, ap.FullName
FROM Sales.Customers AS s
LEFT OUTER JOIN [Application].People AS pp ON s.PrimaryContactPersonID = pp.PersonID
LEFT OUTER JOIN [Application].People AS ap ON s.AlternateContactPersonID = ap.PersonID
INNER JOIN Sales.CustomerCategories AS sc ON s.CustomerCategoryID = sc.CustomerCategoryID

En esta consulta, estamos utilizando una unión LEFT OUTER para combinar la tabla Customers con la tabla People dos veces, basándonos en las columnas PrimaryContactPersonID y AlternateContactPersonID. El resultado es una consulta clara y fácil de leer que sigue un flujo de arriba hacia abajo.

Ahora, vamos a compararlo con la consulta equivalente utilizando una unión RIGHT OUTER:

SELECT s.CustomerName, pp.FullName, ap.FullName
FROM [Application].People AS pp
RIGHT OUTER JOIN Sales.Customers AS s ON s.PrimaryContactPersonID = pp.PersonID
LEFT OUTER JOIN [Application].People AS ap ON s.AlternateContactPersonID = ap.PersonID
INNER JOIN Sales.CustomerCategories AS sc ON s.CustomerCategoryID = sc.CustomerCategoryID

En esta consulta, hemos reemplazado la unión LEFT OUTER con una unión RIGHT OUTER. Como puedes ver, el flujo de la consulta ahora está invertido, lo que requiere que leas el conjunto de datos de abajo hacia arriba. Esto puede hacer que la consulta sea más difícil de entender, especialmente para los desarrolladores o administradores de bases de datos futuros que necesiten mantener o modificar el código.

Aunque puede haber escenarios legítimos y complejos donde sea necesario utilizar una unión RIGHT OUTER, generalmente se recomienda utilizar uniones LEFT OUTER para una mejor legibilidad y mantenibilidad de tus consultas SQL.

Al seguir esta mejor práctica, puedes asegurarte de que tus consultas sean más fáciles de entender, reduciendo las posibilidades de errores y haciendo que sea más eficiente para otros trabajar con tu código.

Entonces, la próxima vez que te encuentres con una unión en tus consultas de SQL Server, considera utilizar una unión LEFT OUTER en lugar de una unión RIGHT OUTER siempre que sea posible. ¡Tus compañeros desarrolladores y tu futuro te lo agradecerán!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.