Neo4j - 路径计数表现

时间:2015-04-13 10:06:08

标签: graph neo4j cypher database-performance

我正在使用Neo4j 2.1.7。我正在尝试计算从节点开始并终止到同一节点(即循环)的路径,并给出最大路径长度。

我(非常简单)的查询是

match p=(n:MyLabel) -[r*..maxLength]- (n)
return n.myid, count(p)

整个图表有200k个节点,而MyLabel节点只有50k,但即使maxLength值很低(5或6),我的性能也很差。

我该如何改进?

提前致谢

1 个答案:

答案 0 :(得分:0)

这是一个全局图表查询,它将创建指数结果。

E.g。如果每个节点有100个rel,那么6个步骤将是100 ^ 6 = 1.000.000.000.000路径,它将找到每个节点,然后你也可以遍历所有节点。

我建议你改为查看shortestPath,但即便如此,做50k次仍然很多,尝试使用PROFILE输出查询计划,以便看到你接触的数据量。

match (n:MyLabel)
match shortestPath((n)-[*..maxLength]- (n))
return n.myid, count(*)

使用新的查询规划器的Neo4j 2.2可能更好。