我正在使用Neo4j 2.1.7。我正在尝试计算从节点开始并终止到同一节点(即循环)的路径,并给出最大路径长度。
我(非常简单)的查询是
match p=(n:MyLabel) -[r*..maxLength]- (n)
return n.myid, count(p)
整个图表有200k个节点,而MyLabel节点只有50k,但即使maxLength值很低(5或6),我的性能也很差。
我该如何改进?
提前致谢
答案 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可能更好。