知识库

如何提高计算节点上关系数量的性能

使用 Cypher 可以按以下方式计数关系数量

MATCH (n:Actor {name:'Sylvester Stallone'})-->() RETURN count(*);

这将报告名为 Sylvester Stallone 的 Actor 的入向/出向关系数量。

使用 bin/neo4j-shell 并对查询运行 profile 将产生以下输出

image

可以将 Cypher 重写为

MATCH (n:Actor {name:'Sylvester Stallone'})
RETURN size((n)-->())

对应的 profile 如下

image

从上面的 profile 可以看到对 GetDegree(n,None,BOTH) 的引用,这是使用 size( (n)-[]-()) 所导致的结果。正因为如此,我们实际上并没有遍历 (n) 的关系,而是查询该节点存储的 degree 值。

在上面的 GetDegree() 表达式中,第二个参数指代关系名称,第三个参数指代关系的方向。

例如,下面的 Cypher

MATCH (n:Actor {name:'Sylvester Stallone'})
RETURN size( (n)-[:ACTED_IN]->())

将产生以下 profile

image

因此会得到 GetDegree(n,Some(ACTED_IN),OUT)

© . This site is unofficial and not affiliated with Neo4j, Inc.