

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

**注意**  
從引擎 [ 1.4.7.0](engine-releases-1.4.7.0.md) 版開始，不再需要此建議的重寫。

 每當要形成包含不同值的清單時，都會使用 COLLECT(DISTINCT())。COLLECT 是一種彙總函數，分組是根據在相同陳述式中投影的其他金鑰來完成。使用差異時，輸入會分割成多個區塊，其中每個區塊代表一個群組進行減少。隨著群組數量的增加，效能將會受到影響。在 Neptune 中，在實際收集/形成清單之前執行 DISTINCT 會更有效率。這允許對整個區塊的分組索引鍵直接進行分組。

 請考處下列查詢：

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

 撰寫此查詢的另一種最佳方式是：

```
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
```