当我使用此密码查询时
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 ms;真的很长一段时间。我怎样才能优化这个密码查询?任何帮助将不胜感激。
答案 0 :(得分: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)