

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Evitar COLLECT(DISTINCT())
<a name="best-practices-content-11"></a>

**nota**  
A partir da versão [1.4.7.0](engine-releases-1.4.7.0.md) do motor, essa reescrita recomendada não é mais necessária.

 COLLECT(DISTINCT()) é usada sempre que uma lista deve ser formada contendo valores distintos. COLLECT é uma função de agregação e o agrupamento é feito com base em chaves adicionais projetadas na mesma instrução. Quando “distinct” é usado, a entrada é dividida em vários blocos, e cada pedaço denota um grupo para redução. O desempenho será afetado à medida que o número de grupos aumentar. Em Neptune, é muito mais eficiente executar DISTINCT antes collecting/forming de realmente fazer a lista. Isso permite que o agrupamento seja feito diretamente nas chaves de agrupamento de todo o bloco. 

 Considere a seguinte consulta: 

```
MATCH (n:Person)-[:commented_on]->(p:Post)
WITH n, collect(distinct(p.post_id)) as post_list
RETURN n, post_list
```

 Uma maneira mais ideal de escrever essa consulta é: 

```
MATCH (n:Person)-[:commented_on]->(p:Post)
WITH DISTINCT n, p.post_id as postId
WITH n, collect(postId) as post_list
RETURN n, post_list
```