Elusión de rutas con nombre (a menos que sea necesario)
Las rutas con nombre en una consulta siempre tienen un costo adicional, lo que puede suponer penalizaciones en términos de mayor latencia y uso de memoria. Analice la siguiente consulta:
MATCH p = (n)-[:commentedOn]->(m) WITH p, m, n, n.score + m.score as total WHERE total > 100 MATCH (m)-[:commentedON]->(o) WITH p, m, n, distinct(o) as o1 RETURN p, m.name, n.name, o1.name
En la consulta anterior, en el supuesto de que solo queramos conocer las propiedades de los nodos, el uso de la ruta “p” es innecesario. Al especificar la ruta nombrada como una variable, la operación de agregación mediante DISTINCT resultará costosa tanto en términos de tiempo como de uso de memoria. Una versión más optimizada de la consulta anterior podría ser:
MATCH (n)-[:commentedOn]->(m) WITH m, n, n.score + m.score as total WHERE total > 100 MATCH (m)-[:commentedON]->(o) WITH m, n, distinct(o) as o1 RETURN m.name, n.name, o1.name