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

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

避免收集 (不同 ())

每当要形成包含不同值的列表时,都会使用 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