Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre performance. Distinct ou group by

Sou iniciante em banco de dados e tenho uma dúvida sobre boas práticas e performance.

Estou montando uma consulta em uma tabela com milhões de registros e os campos que eu preciso apresentam duplicações porque que existem mais detalhes sobre eles.

Apesar disso, só preciso dos campos, sem os maiores detalhes sobre eles. O que seria mais performático, usar o distinct ou o group by.

A tabela que estou trabalhando possui índices e estatísticas. Alguém consegue me ajudar?

2 respostas
solução!

A princípio seria a mesma coisa mas a engine pode criar query plans diferentes, especialmente dependendo dos filtros (em tempo: em versões antigas o distinct geralmente era + lento). Quando o assunto é performance é sempre necessário testar. Crie as duas queries, se seu banco não está populado crie um ambiente e popule as tabelas com dados qq só p/ dar volume mesmo e teste alternadamente das duas maneiras (se possível inclua testes "cold buffer"). Verifique o consumo dos quatro maiores recursos usados: IO, Memoria, CPU e paciência do usuário.

Oi Fabio, tranquilo?

Implicitamente o group by já realiza um distinct, logo não teria uma diferença performática. A única diferença seria que no primeiro você teria a opção de usar as funções de agregação.