UNION x UNION ALL
Qual a diferença entre UNION e...?
Este post será sobre uma pergunta que sempre me fazem. Qual a diferença entre UNION e UNION ALL?
Para começarmos vamos só relembrar 2 regas básicas para o uso do UNION/UNION ALL -Todas consultas devem ter o mesmo número de campos -O tipo de dado do Campo1 da Consulta1 deve ser igual ao tipo de dado do Campo1 da Consulta2 e assim por diante.
De forma breve, a diferença é que o UNION ALL apenas une os resultados de cada select. Enquanto o UNION não exibe valores repetidos, ou seja, ele faz um distinct antes, tornando a consulta mais onerosa. Vamos à prática:
DECLARE @Clientes2010 table (Nome varchar(50)) DECLARE @Clientes2011 table (Nome varchar(50))
INSERT INTO @Clientes2010 values ('Empresa X'),('Empresa Y'),('Empresa Z'), ('Empresa Alfa') INSERT INTO @Clientes2011 values ('Empresa A'),('Empresa B'),('Empresa Z'), ('Empresa Alfa')
SELECT Nome FROM @Clientes2010 UNION SELECT Nome FROM @Clientes2011 SELECT Nome FROM @Clientes2010 UNION all SELECT Nome FROM @Clientes2011


Plano de execução:Â

Análise:

Veja que o comando UNION foi quase 3 x mais oneroso comparado ao UNION ALL
DICA:
Se você está fazendo uma união de selects e você tem certeza que são valores diferentes(Pessoa FÃsica/Pessoa JurÃdica) , use sempre o UNION ALL, pois não fará diferença o Distinct e a performance será melhor.
Se você está fazendo uma união de selects e você tem certeza que são valores diferentes(Pessoa FÃsica/Pessoa JurÃdica) , use sempre o UNION ALL, pois não fará diferença o Distinct e a performance será melhor.
Related articles
Short: SQL Update using begin try and begin transaction
Commit and Rollback command
Getting the last 120 months of data from my database
how to do it in SQL language?
How to create a variable to use the IN clause SELECT query SQL?
Database code part
Ozimar Henrique