知识库

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

使用 Cypher,可以如下方式计算关系数量

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

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

使用 `bin/neo4j-shell` 并对查询运行配置文件将生成以下输出

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)`