¿Cuál es la diferencia entre UNIÓN y UNIÓN?


¿Cuál es la diferencia entre UNION y UNION ALL?

Author: DineshDB, 2008-09-08

22 answers

UNION elimina los registros duplicados (donde todas las columnas en los resultados son iguales), UNION ALL no lo hace.

Hay un golpe de rendimiento cuando se usa UNION en lugar de UNION ALL, ya que el servidor de la base de datos debe hacer un trabajo adicional para eliminar las filas duplicadas, pero generalmente no desea los duplicados (especialmente cuando se desarrollan informes).

Ejemplo DE UNIÓN:

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

Resultado:

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

UNION ALL ejemplo:

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

Resultado:

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
 1410
Author: Robbie Averill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-01 07:33:32

Tanto UNION como UNION concatenan el resultado de dos SQLs diferentes. Difieren en la forma en que manejan los duplicados.

  • UNION realiza una DISTINCIÓN en el conjunto de resultados, eliminando cualquier fila duplicada.

  • UNION ALL no elimina duplicados, y por lo tanto es más rápido que UNION.

Nota: Al usar este comando, todas las columnas seleccionadas deben ser del mismo tipo de datos.

Ejemplo: Si tenemos dos tablas, 1) Empleado y 2) Cliente

  1. Datos de la tabla de empleados:

introduzca la descripción de la imagen aquí

  1. Datos de la tabla de clientes:

introduzca la descripción de la imagen aquí

  1. Ejemplo DE UNIÓN (Elimina todos los registros duplicados):

introduzca la descripción de la imagen aquí

  1. UNION ALL Example (Solo concatena registros, no elimina duplicados, por lo que es más rápido que UNION):

introduzca la descripción de la imagen aquí

 240
Author: Bhaumik Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-09 12:48:35

UNION elimina duplicados, mientras que UNION ALL no lo hace.

Para eliminar duplicados el conjunto de resultados debe ser ordenado, y esto puede tener un impacto en el rendimiento de la UNIÓN, dependiendo del volumen de datos que se clasifique, y la configuración de varios parámetros RDBMS ( Para Oracle PGA_AGGREGATE_TARGET con WORKAREA_SIZE_POLICY=AUTO o SORT_AREA_SIZE y SOR_AREA_RETAINED_SIZE si WORKAREA_SIZE_POLICY=MANUAL ).

Básicamente, la ordenación es más rápida si se puede llevar a cabo en memoria, pero se aplica la misma advertencia sobre el volumen de datos.

De por supuesto, si necesita datos devueltos sin duplicados, entonces debe usar UNION, dependiendo de la fuente de sus datos.

Habría comentado en el primer post para calificar el comentario "es mucho menos performante", pero no tienen suficiente reputación (puntos) para hacerlo.

 42
Author: mathewbutler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-13 05:13:39

En ORACLE: UNION no admite los tipos de columna BLOB (o CLOB), UNION ALL sí.

 27
Author: Michiel Overeem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-18 20:29:34

La diferencia básica entre UNION y UNION ALL es que la operación union elimina las filas duplicadas del conjunto de resultados, pero union all devuelve todas las filas después de unirse.

De http://zengin.wordpress.com/2007/07/31/union-vs-union-all/

 18
Author: George Mauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-15 17:40:39

Puede evitar duplicados y aún así ejecutar mucho más rápido que UNION DISTINCT (que en realidad es lo mismo que UNION) ejecutando query como esta:

SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X

Observe la parte AND a!=X. Esto es mucho más rápido que la UNIÓN.

 12
Author: Ihor Vorotnov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-13 00:03:50

Solo para agregar mis dos centavos a la discusión aquí: uno podría entender el operador UNION como una UNIÓN pura, orientada a CONJUNTOS-por ejemplo, conjunto A = {2,4,6,8}, conjunto B = {1,2,3,4}, UNA UNIÓN B = {1,2,3,4,6,8}

Cuando se trata de conjuntos, no querrá que los números 2 y 4 aparezcan dos veces, ya que un elemento es o no es en un conjunto.

En el mundo de SQL, sin embargo, es posible que desee ver todos los elementos de los dos conjuntos juntos en una "bolsa" {2,4,6,8,1,2,3,4}. Y para esto propósito T-SQL ofrece el operador UNION ALL.

 12
Author: Peter Perháč,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-06 09:55:35

UNIÓN
El comando UNION se utiliza para seleccionar información relacionada de dos tablas, al igual que el comando JOIN. Sin embargo, cuando se utiliza el comando UNION todas las columnas seleccionadas deben ser del mismo tipo de datos. Con UNION, solo se seleccionan valores distintos.

UNIÓN TODOS
El comando UNION ALL es igual al comando UNION, excepto que UNION ALL selecciona todos los valores.

La diferencia entre Union y Union all es que Union all no eliminar duplicados filas, en su lugar, simplemente extrae todas las filas de todas las tablas que se ajustan a los detalles de la consulta y las combina en una tabla.

Una instrucción UNION efectivamente hace un SELECT DISTINCT en el conjunto de resultados. Si sabe que todos los registros devueltos son únicos de su unión, use UNION ALL en su lugar, da resultados más rápidos.

 9
Author: DotNetGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-18 14:43:22

No estoy seguro de que importe qué base de datos

UNION y UNION ALL debería funcionar en todos los servidores SQL.

Debe evitar los UNION s innecesarios que son enormes fugas de rendimiento. Como regla general, use UNION ALL si no está seguro de cuál usar.

 6
Author: Jakub Šturc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-30 10:59:25

UNIÓN - resultados en distintas registros

mientras que

UNION ALL-da como resultado todos los registros, incluidos los duplicados.

Ambos son operadores de bloqueo y, por lo tanto, personalmente prefiero usar JOINS en lugar de Operadores de Bloqueo(UNION, INTERSECT, UNION ALL, etc.). ) cuando quieras.

Para ilustrar por qué Union operation funciona mal en comparación con Union All checkout, el siguiente ejemplo.

CREATE TABLE #T1 (data VARCHAR(10))

INSERT INTO #T1
SELECT 'abc'
UNION ALL
SELECT 'bcd'
UNION ALL
SELECT 'cde'
UNION ALL
SELECT 'def'
UNION ALL
SELECT 'efg'


CREATE TABLE #T2 (data VARCHAR(10))

INSERT INTO #T2
SELECT 'abc'
UNION ALL
SELECT 'cde'
UNION ALL
SELECT 'efg'

introduzca la descripción de la imagen aquí

Los siguientes son los resultados de la UNIÓN TODAS las operaciones sindicales.

introduzca la descripción de la imagen aquí

Una declaración de UNIÓN efectivamente hace un SELECT DISTINCT en el conjunto de resultados. Si sabe que todos los registros devueltos son únicos de su unión, use UNION ALL en su lugar, da resultados más rápidos.

El uso de UNION da como resultado Distintas operaciones de Ordenación en el Plan de Ejecución. Prueba para probar esta declaración se muestra a continuación:

introduzca la descripción de la imagen aquí

 6
Author: DBA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-21 17:24:42

Union se utiliza para seleccionar valores distintos de dos tablas donde como union all se usa para seleccionar todos los valores incluyendo duplicados de los cuadros

 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-15 10:42:42

(De Microsoft SQL Server Book Online)

UNIÓN [TODOS]

Especifica que se combinarán varios conjuntos de resultados y se devolverán como un único conjunto de resultados.

TODOS

Incorpora todas las filas en los resultados. Esto incluye duplicados. Si no se especifica, se eliminan las filas duplicadas.

UNION tomará demasiado tiempo ya que se aplica una búsqueda de filas duplicadas como DISTINCT en los resultados.

SELECT * FROM Table1
UNION
SELECT * FROM Table2

Es equivalente de:

SELECT DISTINCT * FROM (
    SELECT * FROM Table1
    UNION ALL
    SELECT * FROM Table2) DT

Un efecto secundario de aplicar DISTINCT sobre los resultados es una operación de clasificación sobre los resultados.

UNION ALL los resultados se mostrarán como orden arbitrario en los resultados, Pero UNION los resultados se mostrarán como ORDER BY 1, 2, 3, ..., n (n = column number of Tables) aplicados en los resultados. Puede ver este efecto secundario cuando no tiene ninguna fila duplicada.

 5
Author: shA.t,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-12 08:34:22

Es bueno entender con un diagrama de Venn.

Aquí está el enlace a la fuente. Hay una buena descripción.

introduzca la descripción de la imagen aquí

 5
Author: michael-mammut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-17 09:46:01

Añado un ejemplo,

UNION , se está fusionando con distinct slower> más lento, porque necesita comparación (En Oracle SQL developer, elija query, presione F10 para ver el análisis de costos).

UNION ALL , se está fusionando sin distinct faster > faster.

SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
UNION
SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;

Y

SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
UNION ALL
SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;
 3
Author: Do Nhu Vy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-27 04:35:14

Una cosa más que me gustaría añadir-

Union:- El conjunto de resultados se ordena en orden ascendente.

Union All:- El conjunto de resultados no está ordenado. la salida de dos consultas simplemente se anexa.

 2
Author: Rahul Sawant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-13 05:14:47

UNION fusiona el contenido de dos tablas estructuralmente compatibles en una sola tabla combinada.

  • Diferencia

La diferencia entre UNION y UNION ALL es que UNION will omite los registros duplicados, mientras que UNION ALL incluirá los registros duplicados.

Union El conjunto de resultados se ordena en orden ascendente, mientras que UNION ALL El conjunto de resultados no se ordena

UNION realiza un DISTINCT en su conjunto de resultados por lo que eliminará cualquier fila duplicada. Mientras que UNION ALL no eliminará duplicados y por lo tanto es más rápido que UNION.*

Nota: El rendimiento de UNION ALL normalmente será mejor que UNION, ya que UNION requiere que el servidor haga el trabajo adicional de eliminar cualquier duplicado. Por lo tanto, en los casos en que es seguro que no habrá duplicados, o donde tener duplicados no es un problema, se recomendaría el uso de UNION ALL por razones de rendimiento.

 2
Author: pedram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-17 05:45:30

Supongamos que usted tiene dos tabla Maestro & Estudiante

Ambos tienen 4 Columna con nombre diferente así

Teacher - ID(int), Name(varchar(50)), Address(varchar(50)), PositionID(varchar(50))

introduzca la descripción de la imagen aquí

Student- ID(int), Name(varchar(50)), Email(varchar(50)), PositionID(int)

introduzca la descripción de la imagen aquí

Puede aplicar UNION o UNION ALL para esas dos tablas que tienen el mismo número de columnas. Pero tienen diferente nombre o tipo de datos.

Cuando se aplica la operación UNION en 2 tablas, descuida todas las entradas duplicadas(valor de todas las columnas de la fila en un tabla es lo mismo de otra tabla). Así

SELECT * FROM Student
UNION
SELECT * FROM Teacher

El resultado será

introduzca la descripción de la imagen aquí

Cuando se aplica la operación UNION ALL en 2 tablas, devuelve todas las entradas con duplicados(si hay alguna diferencia entre cualquier valor de columna de una fila en 2 tablas). Así

SELECT * FROM Student
UNION ALL
SELECT * FROM Teacher

Salida introduzca la descripción de la imagen aquí

Rendimiento:

Obviamente UNION TODO el rendimiento es mejor que UNION ya que lo hacen adicional tarea para eliminar los valores duplicados. Puede comprobar que desde Tiempo Estimado de ejecución presionando ctrl + L en MSSQL

 2
Author: reza.cse08,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-07 07:03:01

En palabras muy simples, la diferencia entre UNION y UNION ALL es que UNION omitirá los registros duplicados, mientras que UNION ALL incluirá registros duplicados.

 1
Author: Shubham Pandey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-25 16:01:56

UNION elimina los registros duplicados en other hand UNION ALL does not. Pero uno necesita verificar la mayor parte de los datos que se procesarán y la columna y el tipo de datos deben ser los mismos.

Dado que union utiliza internamente un comportamiento "distinto" para seleccionar las filas, es más costoso en términos de tiempo y rendimiento. como

select project_id from t_project
union
select project_id from t_project_contact  

Esto me da 2020 registros

Por otra parte

select project_id from t_project
union all
select project_id from t_project_contact

Me da más de 17402 filas

En la perspectiva de precedencia ambos tienen lo mismo precedencia.

 0
Author: Pawan Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 06:02:21

Si no hay ORDER BY, un UNION ALL puede devolver las filas a medida que avanza, mientras que un UNION le haría esperar hasta el final de la consulta antes de darle todo el conjunto de resultados a la vez. Esto puede hacer una diferencia en una situación de tiempo fuera-a UNION ALL mantiene la conexión viva, por así decirlo.

Así que si tiene un problema de tiempo fuera, y no hay clasificación, y los duplicados no son un problema, UNION ALL puede ser bastante útil.

 0
Author: AjV Jsy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-03 12:38:27

UNION y UNION se utilizan para combinar dos o más resultados de consulta.

El comando UNION selecciona información distinta y relacionada de dos tablas que eliminará las filas duplicadas.

Por otro lado, el comando UNION ALL selecciona todos los valores de ambas tablas, lo que muestra todas las filas.

 0
Author: Sona,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-23 08:21:02

Diferencia Entre Unión Vs Unión TODO En Sql

¿Qué Es La Unión En SQL?

El operador de la UNIÓN se utiliza para combinar el conjunto de resultados de dos o más conjuntos de datos .

Each SELECT statement within UNION must have the same number of columns
The columns must also have similar data types
The columns in each SELECT statement must also be in the same order

Unión Vs Unión Todos Con Ejemplo

 0
Author: Sandeep TK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-10 10:12:39