不要使用命名路径(除非必需)
查询中的命名路径总是会产生额外的成本,这可能会增加延迟和内存使用量。请考虑以下查询:
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
在上述查询中,假设我们只想知道节点的属性,那么就没有必要使用路径“p”。如果将命名路径指定为变量,那么使用 DISTINCT 的聚合操作会耗费大量时间和内存。上述查询更优化的版本可能是:
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