Diferenças entre Distinct e Group By – SQL Server

0

Qual é a diferença entre DISTINCT e GROUP BY?

 

SQL

Esta pergunta muitas vezes vem a minha cabeça. Apesar de me considerar um aprendiz em relação à banco de dados, vira e mexe eu acabo tendo que me virar, pois bem, após algumas pesquisas consegui resumidamente descobrir a diferença entre essas duas funções do SQL.

 

A função DISTINCT e GROUP BY normalmente geram o mesmo plano de consulta, de modo que o desempenho deve ser o mesmo em ambas as construções de consulta. Fiz alguns testes locais em pequenas quantidades ( cerca de 1000 registros e o desempenho foi o mesmo )

A função GROUP BY deve ser utilizada para aplicar os operadores de agregação para cada grupo. Se tudo o que você precisa é para remover duplicatas então use DISTINCT.

O que eu pude perceber que inicialmente os algoritmos de DISTINCT e GROUP BY são idênticos. A diferença entre os algoritmos é que o GROUP BY permite funções de agregação como um passo adicional enquanto que o DISTINCT não permite. Quando se utiliza o GROUP BY sem essas funções, estaremos “repetindo” exatamente as fases iniciais que o DISTINCT utiliza e implementando as sub-funções de agregação do GROUP BY.

Veja alguns exemplos que lhe ajudarão a entender de maneira mais “dinâmica” :

Exemplo de Distinct:

SELECT DISTINCT Pessoa, Email
FROM Pessoas

Exemplo de Group By:

SELECT Pessoa, Email
FROM Pessoas
GROUP BY Pessoa, Email

Exemplo de agregação com Group By :

SELECT Pessoa, Email, COUNT(*) Total
FROM Pessoas
GROUP BY Pessoa, Email

 

Bom, ficamos por aqui hoje com esta dica rápida!

 


Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com