2017-07-04 123 views
0

当我用这个暗号查询我怎样才能优化这个密码查询?

match p=(n)-[r*8]-(n) 
where id(n)=548 
with p 
where ALL(x IN nodes(p)[1..length(p)] WHERE SINGLE(y IN nodes(p)[1..length(p)] WHERE x=y)) 
return count(p) 

花了51922毫秒返回结果;这是真的很长一段时间。我怎样才能优化这个密码查询?任何帮助,将不胜感激。

回答

0

看起来你想要一个没有重复节点的简单电路(除了开始和结束节点)。

有一个APOC Procedure来获得两个节点之间的所有简单路径,最大路径长度。当起始和结束节点相同时,它目前没有工作,但是如果我们将末端节点设置为开始节点的任何相邻节点,并且过滤器只保留长度为7的路径(因为路径排除了最后一次跳回到开始节点),那么我们应该能够非常快速地得到正确答案。

match (n)--[m] 
with distinct n, m 
call apoc.algo.allSimplePaths(n, m, '', 7) YIELD path 
with path 
where length(path) = 7 
return count(path) 
相关问题