避免使用 COLLECT(DISTINCT()) - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

避免使用 COLLECT(DISTINCT())

只要形成包含不同值的列表时,就会用到 COLLECT (DISTINCT ())。COLLECT 是一个聚合函数,分组是根据同一语句中投射的其他键来完成的。当使用 distinct 时,输入会被分成多个块,其中每个块表示一个要减少的组。随着组数的增加,性能将受到影响。在 Neptune 中,在实际列表之前执行 DISTINCT 要有效得多 collecting/forming 。这可以直接在整个块的分组键上进行分组。

请考虑以下查询:

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