知识库

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

使用 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)-->())

其性能分析结果是

image

从上面的性能分析中,您将看到对 GetDegree(n,None,BOTH) 的引用,这是由于使用了 size( (n)-[]-()); 的结果。因此,我们实际上不会对从 (n) 开始的关系进行遍历,而是查阅给定节点存储的度值。

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

例如,Cypher 查询

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

将产生以下性能分析结果

image

因此是 GetDegree(n,Some(ACTED_IN),OUT)

© . All rights reserved.