Por: Greg Robidoux | Atualizado em: 2019-10-29 | Comentários (4) | Relacionadas: 1 | 2 | 3 | 4 | 5 | Mais > JUNTAR Tabelas
Problema
às Vezes, há uma necessidade de se combinar dados de várias tabelas ou modos de exibição intoone abrangente conjunto de dados. Isto pode ser para tabelas com dados semelhantes dentro da samedatabase ou talvez haja uma necessidade de combinar dados semelhantes através de bases de dados ou mesmo servidores Cruz.
Nesta Dica vamos dar uma olhada em como usar os comandos UNION vs. UNIONALL e como eles diferem.,
solução
no servidor SQL você tem a capacidade de combinar vários conjuntos de dados em um conjunto de dados abrangente usando a União ou união todos os operadores. Existe uma grande diferença na apresentação destes trabalhos, bem como no conjunto de resultados finais que são devolvidos, mas basicamente estes conjuntos de dados juntam-se a vários conjuntos de dados que têm estruturas semelhantes num conjunto de dados combinado.
União
esta operação permitir-lhe-á juntar conjuntos de dados multiplicados num conjunto de dados e irá remover quaisquer duplicados que existam. Basicallyit está realizando uma operação distinta em todas as colunas do conjunto de resultados.,
UNION ALL
esta operação permite-lhe juntar conjuntos de dados múltiplos num único conjunto de dados, mas não remove quaisquer linhas duplicadas.Porque isso não remove linhas duplicadas este processo é mais rápido, mas se você não quiser registros duplicados, você terá que usar o operador da União em vez disso.,h a consulta deve ter o mesmo número de colunas
Sugestão: Se você não tem exatamente a mesma colunas em todas as consultas usar um valor padrão ou um valor NULL, tais como:
SELECT firstName, lastName, company FROM businessContactsUNIONSELECT firstName, lastName, NULL FROM nonBusinessContactsorSELECT firstName, lastName, createDate FROM businessContactsUNION ALLSELECT firstName, lastName, getdate() FROM nonBusinessContacts
UNIÃO vs., UNION ALL Examples
Let’s take a look at a few simple examples of how these commands work and howthey differ. Como você verá, os resultados finais serão diferentes, mas há alguma informação interessante sobre como o servidor SQL realmente completa o processo.
UNION ALL
neste primeiro exemplo estamos a utilizar a União todos os operadores contra o directório de Emprego a partir da Base de dados AdventureWorks. Isto provavelmente não é algo que você gostaria de fazer, mas isso ajuda a ilustrar as diferenças destes dois operadores.
existem 290 linhas no quadro dbo.Funcionario.,
SELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.Employee
quando esta consulta é executada, o conjunto de resultados tem 870 linhas. Estas são as 290 linhas retornadas 3 vezes. Os dados são apenas colocados juntos um conjunto de dados em cima do outro conjunto de dados.
Aqui está o plano de execução para esta consulta. Podemos ver que a tabela foi questionada 3 vezes e o servidor SQL deu um passo de concatenação para concatenar todos os dados.
União
neste próximo exemplo estamos a usar o operador da União contra a tabela de empregados da Base de dados AdventureWorks.,
SELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.Employee
quando esta consulta é executada, o conjunto de resultados tem 290 linhas. Apesar de combinarmos os dados três vezes, o operador da União removeu os registos duplicados e, por conseguinte, apenas as 290 linhas únicas.
Aqui está o plano de execução para esta consulta. Podemos ver que o servidor SQL primeiro questionou 2 das tabelas, então fez uma operação de junção Merge para combinar as duas primeiras tabelas e, em seguida, fez outra junção Merge junto com questionar a terceira tabela na consulta.,Assim, podemos ver que houve muito mais trabalho que teve que ser realizado para obter este resultado em comparação com todos da União.
União vs. União todos os exemplos com ordenação na coluna de índice agrupado
se levarmos isto um passo mais longe e fizermos um tipo de dados usando a coluna de ClusteredIndex obtemos estes planos de execução. A partir disso podemos ver que o plano de execução que o servidor SQL está usando é idêntico para cada uma dessas operações, mesmo que os conjuntos de resultados finais ainda conterão 870 linhas para a União e 290 linhas para a União.,
UNION ALL de execução do plano de classificação no índice de cluster coluna
UNIÃO de execução do plano de classificação no índice de cluster coluna
UNIÃO vs UNIÃO de TODOS os Exemplos Com Classificação Não indexados Coluna
Aqui está outro exemplo, fazendo a mesma coisa, mas desta vez fazendo uma ESPÉCIE em anon coluna indexada. Como você pode ver, os planos de execução são novamente idênticos para estas duas perguntas, mas desta vez, em vez de usar uma junção MERGE, uma concatenação e operações de sortes são usados.,
- dê uma olhada essas outras dicas que podem ser úteis para utilizar os operadores union
- Comparar Vários Conjuntos de dados com o INTERSECTand EXCETO os operadores
- SQL Server Quatro partes de nomeação
- Comparar o SQL Server Resultados de Duas Consultas utilizando UNIÃO
Última actualização: 2019-10-29
Sobre o autor
ver todas as minhas dicas
Leave a Reply