PostgreSQL DISTINCT
A palavra-chave `DISTINCT` no PostgreSQL é utilizada para retornar valores exclusivos de uma coluna ou de uma combinação de colunas, eliminando entradas duplicadas. É frequentemente usado em conjunto com a instrução `SELECT` para garantir que o conjunto de resultados contenha apenas registros distintos.
Uso
A palavra-chave `DISTINCT` é usada quando você precisa remover linhas duplicadas dos resultados da consulta. Ela segue a palavra-chave `SELECT` e se aplica às colunas especificadas a seguir.
SELECT DISTINCT column1, column2, ...
FROM table_name;
Nessa sintaxe, `DISTINCT` garante que a combinação de `column1`, `column2`, etc., seja exclusiva no conjunto de resultados.
Exemplos
1. Valores básicos exclusivos
SELECT DISTINCT country
FROM customers;
Este exemplo recupera uma lista de países exclusivos da tabela `customers`, eliminando quaisquer entradas duplicadas. Observe que os valores `NULL` são tratados como entradas distintas.
2. Combinações exclusivas
SELECT DISTINCT first_name, last_name
FROM employees;
Aqui, a consulta retorna combinações exclusivas de `nome_primeiro` e `nome_último` da tabela `funcionários`.
3. Usando DISTINCT com ORDER BY
SELECT DISTINCT category
FROM products
ORDER BY category ASC;
Este exemplo recupera categorias de produtos distintas e as ordena em ordem alfabética.
4. Uso com DISTINCT ON
SELECT DISTINCT ON (column1) column1, column2
FROM table_name
ORDER BY column1, column2;
No PostgreSQL, `DISTINCT ON` permite que você selecione linhas distintas com base em colunas específicas, o que pode ser útil para cenários mais complexos.
Dicas e práticas recomendadas
- Use-o com sabedoria em conjuntos de dados grandes. O `DISTINCT` pode consumir muitos recursos devido às operações de classificação e comparação envolvidas, portanto, use-o criteriosamente para evitar problemas de desempenho.
- Combine com `ORDER BY`. Emparelhe `DISTINCT` com `ORDER BY` para classificar resultados exclusivos conforme necessário.
- Limite as colunas quando possível. Aplique `DISTINCT` ao menor número de colunas para reduzir a complexidade e o tempo de execução.
- Verifique a exclusividade necessária. Certifique-se de que o uso de `DISTINCT` seja realmente necessário para sua consulta específica, a fim de evitar sobrecarga desnecessária.