如何提高计算节点上关系数量的性能
使用 Cypher 可以按以下方式计数关系数量
MATCH (n:Actor {name:'Sylvester Stallone'})-->() RETURN count(*);
这将报告名为 Sylvester Stallone 的 Actor 的入向/出向关系数量。
使用 bin/neo4j-shell 并对查询运行 profile 将产生以下输出

可以将 Cypher 重写为
MATCH (n:Actor {name:'Sylvester Stallone'})
RETURN size((n)-->())
对应的 profile 如下

从上面的 profile 可以看到对 GetDegree(n,None,BOTH) 的引用,这是使用 size( (n)-[]-()) 所导致的结果。正因为如此,我们实际上并没有遍历 (n) 的关系,而是查询该节点存储的 degree 值。
在上面的 GetDegree() 表达式中,第二个参数指代关系名称,第三个参数指代关系的方向。
例如,下面的 Cypher
MATCH (n:Actor {name:'Sylvester Stallone'})
RETURN size( (n)-[:ACTED_IN]->())
将产生以下 profile

因此会得到 GetDegree(n,Some(ACTED_IN),OUT)
此页面有帮助吗?