Qual é a diferença entre União e união?

Qual é a diferença entre UNION e UNION ALL?

Author: DineshDB, 2008-09-08

22 answers

UNION remove registos duplicados (onde todas as colunas dos resultados são as mesmas), UNION ALL não.

Existe um acerto de desempenho ao usar UNION em vez de UNION ALL, uma vez que o servidor de bases de dados deve fazer um trabalho adicional para remover as linhas duplicadas, mas normalmente você não quer os duplicados (especialmente ao desenvolver relatórios).

Exemplo da União:

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

Resultado:

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
TODOS exemplo:
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, 2017-12-01 07:33:32
Tanto a União como a União concatenam o resultado de duas SQLs diferentes. Eles diferem na forma como lidam com duplicados.
  • A União executa um distinto no conjunto de resultados, eliminando quaisquer linhas duplicadas.

  • A União não elimina todos os duplicados, pelo que é mais rápida do que a União.

Nota: ao usar estes comandos, todas as colunas seleccionadas têm de ser do mesmo tipo de dados.

Exemplo: se tivermos dois quadros, 1) empregado e 2) Cliente
  1. Dados da tabela dos empregados:

enter image description here

  1. Dados da tabela de clientes:

enter image description here

  1. exemplo da União (remove todos os registos duplicados):

enter image description here

  1. todos os exemplos da União (apenas concatenar registos, não eliminar duplicados, por isso é mais rápido do que a União):

enter image description here

 240
Author: Bhaumik Patel, 2015-04-09 12:48:35

UNION remove duplicados, enquanto UNION ALL não.

, a fim de remover duplicatas o conjunto de resultados deve ser classificado, e esta pode ter um impacto sobre o desempenho da UNIÃO, dependendo do volume de dados a serem ordenados, e os ajustes de vários RDBMS parâmetros ( Para Oracle PGA_AGGREGATE_TARGET com WORKAREA_SIZE_POLICY=AUTO ou SORT_AREA_SIZE e SOR_AREA_RETAINED_SIZE se WORKAREA_SIZE_POLICY=MANUAL ).

Basicamente, a ordenação é mais rápida se puder ser realizada na memória, mas a mesma ressalva sobre o volume de dados inicio.

Claro, se precisar de dados devolvidos sem duplicados, então deve usar a União, dependendo da fonte dos seus dados.

Eu teria comentado sobre o primeiro post para qualificar o comentário" é muito menos performante", mas ter reputação insuficiente (pontos) para fazê-lo.

 42
Author: mathewbutler, 2016-04-13 05:13:39

No oráculo: A União não suporta os tipos de colunas BLOB (ou CLOB), A União toda suporta.

 27
Author: Michiel Overeem, 2011-02-18 20:29:34

A diferença básica entre a operação União e união tudo é a União elimina as linhas duplicadas do conjunto de resultados, mas a União todos retorna todas as linhas após a União.

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

 18
Author: George Mauer, 2018-05-15 17:40:39

Você pode evitar duplicados e ainda executar muito mais rápido do que União distinta (que é realmente o mesmo que União), executando pesquisa como esta:

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

Repara na parte AND a!=X. Isto é muito mais rápido do que a União.

 12
Author: Ihor Vorotnov, 2012-08-13 00:03:50

Só para adicionar os meus dois cêntimos à discussão aqui: podia-se entender o operador {[[0]} como uma união pura e orientada - por exemplo, set a={2,4,6,8}, set B={1,2,3,4}, A União B = {1,2,3,4,6,8}

Ao lidar com conjuntos, você não iria querer números 2 e 4 aparecendo duas vezes, como um elemento ou é ou não é em um conjunto.

No mundo do SQL, no entanto, você pode querer ver todos os elementos dos dois conjuntos juntos em um" saco " {2,4,6,8,1,2,3,4}. E para este propósito T-SQL oferece ao operador UNION ALL.

 12
Author: Peter Perháč, 2013-06-06 09:55:35

Europeia
O comando UNION é usado para seleccionar a informação relacionada de duas tabelas, tal como o comando JOIN. No entanto, ao usar o comando UNION Todas as colunas seleccionadas têm de ser do mesmo tipo de dados. Com UNION, apenas são seleccionados valores distintos.

EUROPEIA
O comando UNION ALL é igual ao comando UNION, excepto que UNION ALL selecciona todos os valores.

A diferença entre Union e Union all é que Union all não eliminará duplicate rows, instead it just pulls all rows from all tables fitting your query specifics and combines them into a table.

A declaração UNION faz efectivamente um SELECT DISTINCT sobre o conjunto de resultados. Se você sabe que todos os registros devolvidos são únicos de sua união, use UNION ALL em vez disso, ele dá resultados mais rápidos.

 9
Author: DotNetGuy, 2015-05-18 14:43:22

Não sei se é importante qual a base de dados

UNION e UNION ALL deve funcionar em todos os servidores SQL.

Devem evitar fugas desnecessárias. Como regra geral use UNION ALL Se não tiver a certeza de qual usar.
 6
Author: Jakub Šturc, 2015-05-30 10:59:25

UNION-results in distinct records

enquanto

Todos os resultados da União em todos os registos, incluindo duplicados.

Ambos são operadores de bloqueio e, portanto, eu pessoalmente prefiro usar junções em vez de operadores de bloqueio(União, INTERSECT, União tudo, etc. ) sempre.

([2]) para ilustrar o mau desempenho da operação da União em comparação com a União, ver o exemplo seguinte.
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'

enter image description here

Seguem-se os resultados de União e operações sindicais.

enter image description here

Uma declaração da União efetivamente faz uma seleção distinta sobre o conjunto de resultados. Se você sabe que todos os registros devolvidos são únicos de sua união, use União em vez disso, ele dá resultados mais rápidos.

Usando os resultados da União emtipo distinto operações no plano de execução. A prova para provar esta declaração é mostrada abaixo:

enter image description here

 6
Author: DBA, 2016-06-21 17:24:42

A União é utilizada para seleccionar valores distintos de duas tabelas onde como União tudo é usado para selecionar todos os valores, incluindo duplicados das tabelas

 5
Author: , 2009-06-15 10:42:42

(do Microsoft SQL Server Book Online)

EUROPEIA [TODOS]

Especifica que os conjuntos de resultados múltiplos devem ser combinados e devolvidos como um único conjunto de resultados.

TODOS

Incorpora todas as linhas nos resultados. Isto inclui duplicados. Se não for especificado, as linhas duplicadas são removidas.

UNION irá demorar muito tempo até que uma linha duplicada como o DISTINCT seja aplicada na resultado.

SELECT * FROM Table1
UNION
SELECT * FROM Table2

É equivalente a:

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

Um efeito secundário da aplicação de DISTINCT sobre os resultados é uma operação de ordenação sobre os resultados.

UNION ALL os resultados serão apresentados como arbitrário ordem nos resultados, mas UNION os resultados serão apresentados como ORDER BY 1, 2, 3, ..., n (n = column number of Tables) aplicado nos resultados. Você pode ver este efeito colateral quando você não tem nenhuma linha duplicada.

 5
Author: shA.t, 2015-04-12 08:34:22
É bom entender com um diagrama de Venn. Aqui está o relação à fonte. Há uma boa descrição.

enter image description here

 5
Author: michael-mammut, 2016-05-17 09:46:01

Adiciono um exemplo,

UNION , está a fundir-se com o distinct --> mais lento, porque precisa de comparação (no programador SQL Oracle, escolha a consulta, carregue em F10 para ver a análise de custos).

Mais rápido.

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

E

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, 2017-04-27 04:35:14
Mais uma coisa que gostaria de acrescentar ...

Union : - O conjunto de Resultados está ordenado por ordem ascendente.

Union ALL: - O conjunto de resultados não está ordenado. duas consultas são adicionadas.

 2
Author: Rahul Sawant, 2016-04-13 05:14:47

UNION funde o conteúdo de duas tabelas estruturalmente compatíveis em uma única tabela combinada.

  • diferença:

a diferença entre UNION e UNION ALL é que UNION will omite registos duplicados enquanto UNION ALL incluirá registos duplicados.

Union O conjunto de Resultados É ordenado por ordem ascendente enquanto que UNION ALL o conjunto de resultados não é ordenado

UNION executa um DISTINCT no seu conjunto de Resultados para que ele eliminar quaisquer linhas duplicadas. Considerando que UNION ALL não irá remover duplicados e, portanto, é mais rápido do que UNION.*

Nota: O desempenho do UNION ALL normalmente será melhor do que UNION, uma vez que UNION requer que o servidor faça o trabalho adicional de remover as duplicatas. Assim, nos casos em que é certo que não haverá duplicados, ou em que ter duplicados não é um problema, o uso de UNION ALL seria recomendado por razões de desempenho.

 2
Author: pedram, 2016-05-17 05:45:30
Suponha que tem duas mesas. & estudantes

Ambos têm 4 colunas com nomes diferentes como este

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

enter image description here

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

enter image description here

Você pode aplicar União ou união todos para aqueles dois quadros que têm o mesmo número de colunas. Mas eles têm nomes ou tipos de dados diferentes.

Quando aplica a operação UNION em 2 tabelas, negligencia todos os itens duplicados(todos os valores das colunas da linha em uma tabela é o mesmo de outra tabela). Assim.

SELECT * FROM Student
UNION
SELECT * FROM Teacher

O resultado será

enter image description here

Quando aplica a operação UNION ALL em 2 tabelas, devolve todos os itens com duplicado (se existir alguma diferença entre qualquer valor de coluna de uma linha em 2 tabelas). Assim.

SELECT * FROM Student
UNION ALL
SELECT * FROM Teacher

Saída enter image description here

Desempenho:

Obviamente A União tudo o desempenho é melhor que A União como eles fazem tarefa adicional para remover os valores duplicados. Você pode verificar que a partir de execução tempo estimado pressionando ctrl+L at MSSQL

 2
Author: reza.cse08, 2016-06-07 07:03:01

Em palavras muito simples, a diferença entre a União e a união é que a União omitirá registos duplicados, enquanto a União incluirá todos registos duplicados.

 1
Author: Shubham Pandey, 2018-03-25 16:01:56

A União remove os registos duplicados em contrapartida, nem todos os registos são iguais. Mas é preciso verificar a maior parte dos dados que vão ser processados e a coluna e o tipo de dados devem ser os mesmos.

Uma vez que a União internamente usa um comportamento "distinto" para selecionar as linhas, por isso é mais caro em termos de tempo e desempenho. Tipo

select project_id from t_project
union
select project_id from t_project_contact  

Isto dá-me os registos de 2020

Por outro lado

select project_id from t_project
union all
select project_id from t_project_contact

Dá-me mais de 17402 linhas

Numa perspectiva de precedência, ambos têm a mesma precedência.
 0
Author: Pawan Kumar, 2014-01-22 06:02:21

Se não existe {[[0]}, um UNION ALL pode trazer linhas de volta à medida que vai, enquanto que um UNION faria você esperar até o fim da consulta antes de lhe dar todo o resultado definido de uma vez. Isso pode fazer a diferença em uma situação de tempo - a UNION ALL Mantém a conexão viva, por assim dizer.

Então, se você tem um problema de tempo, e não há ordenação, e duplicados não são um problema, UNION ALL pode ser bastante útil.
 0
Author: AjV Jsy, 2016-03-03 12:38:27
A União e a União são usadas para combinar dois ou mais resultados de pesquisa.

O comando da União selecciona informação distinta e relacionada de duas tabelas que irão eliminar linhas duplicadas.

Por outro lado, o comando UNION ALL selecciona todos os valores de ambas as tabelas, que mostram todas as linhas.

 0
Author: Sona, 2016-09-23 08:21:02

Diferença entre União contra União tudo em Sql

O que é a União em SQL?

O operador da União é utilizado para combinar o conjunto de resultados de dois ou mais conjuntos de dados .

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ão Contra União Tudo Com O Exemplo

 0
Author: Sandeep TK, 2018-07-10 10:12:39