Evite COLLECT (DISTINCT()) - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Evite COLLECT (DISTINCT())

COLLECT(DISTINCT()) é usado 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 distinto é usado, a entrada é dividida em vários blocos, onde cada pedaço denota um grupo para redução. O desempenho será afetado à medida que o número de grupos aumentar. Em Neptune, é muito mais eficiente DISTINCT executar 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