Elusión de COLLECT (DISTINCT ()) - Amazon Neptune

Elusión de COLLECT (DISTINCT ())

COLLECT (DISTINCT ()) se usa siempre que se va a formar una lista que contenga valores distintos. COLLECT es una función de agregación y la agrupación se realiza en función de la proyección de claves adicionales en la misma instrucción. Cuando se usa distinct, la entrada se divide en varios fragmentos, cada uno de los cuales representa un grupo para la reducción. El rendimiento se verá afectado a medida que aumente el número de grupos. En Neptune, es mucho más eficiente ejecutar DISTINCT antes de recopilar/formar la lista. De este modo, la agrupación se puede realizar directamente en las claves de agrupación para todo el fragmento.

Analice la siguiente consulta:

MATCH (n:Person)-[:commented_on]->(p:Post) WITH n, collect(distinct(p.post_id)) as post_list RETURN n, post_list

Una forma más óptima de escribir esta consulta es:

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