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