Qual é a diferença entre UNION
e UNION ALL
?
UNION' remove registros duplicados (onde todas as colunas nos resultados são iguais), 'UNION ALL' não remove.
Há um hit de performance ao utilizar UNION
em vez de UNION ALL
, já que o servidor de banco de dados deve fazer um trabalho adicional para remover as linhas duplicadas, mas normalmente você não quer as duplicatas (especialmente ao desenvolver relatórios).
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
Resultado: Resultado:
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
Resultado: Resultado:
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
A diferença básica entre UNION e UNION ALL é a operação de união que elimina as filas duplicadas do conjunto de resultados, mas a união todas devolve todas as filas após a união.
de http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
Não tenho a certeza se é importante qual a base de dados
O UNION
e UNION ALL
devem funcionar em todos os Servidores SQL.
Você deve evitar que UNION
s desnecessárias são uma enorme fuga de desempenho. Como regra geral, utilize UNION ALL
se não tiver a certeza de qual utilizar.