Oi! Seja bem-vindo!
Hoje vamos estudar a diferença entre Union & Union All, sob os pontos de vista de funcionalidade e performance.
Union vs. Union All
Para fazermos a comparação montei o script abaixo, onde na partida já podemos ver que a diferença de funcionalidade é simples: Union elimina valores duplicados, enquanto que union all não.
Até ai fácil, em uma frase resumimos a diferença de funcionalidade. Mas e quanto a performance? Será que o union é mais veloz porque mostra menos resultados? Acompanhe comigo o tira-teima no vídeo, faça o exercício usando o script abaixo e depois deixe um comentário me dizendo o que achou…
------------------------------------------------------------------ -- Union vs. Union All ------------------------------------------------------------------ -- Exemplo 1: Comparando funcionalidade -- union: elimina dados duplicados select 'dba-pro' as 'union' union select 'dba-pro' -- union all: não altera o resultset select 'dba-pro' as 'union all' union all select 'dba-pro' -- Exemplo 2: Comparando performance -- Requisitos: create table #clientes (nome sysname) create table #colaboradores (nome sysname) insert into #clientes select column_name from information_schema.columns insert into #colaboradores select column_name from information_schema.columns -- OBS: # significa que a tabela é temporária e será eliminada automaticamente quando você fechar o SQL -- Ativar o plano de execução (CONTROL + M) e executar as duas querys para comparar o custo relativo select * from #clientes union select * from #colaboradores select * from #clientes union all select * from #colaboradores -- Excluir dados de teste drop table #clientes drop table #colaboradores
CONCLUSÃO
Qual foi sua conclusão? 🙂
Espero que tenha gostado do artigo, nos vemos no próximo!
Abraço do seu amigo Josué