Evitar COLLECT(DISTINCT()) - Amazon Neptune

Evitar COLLECT(DISTINCT())

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. No Neptune, é muito mais eficiente executar DISTINCT antes de realmente coletar/formar 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