避免 COLLECT(DISTINCT()) - Amazon Neptune

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

避免 COLLECT(DISTINCT())

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