我有2个查询,这些查询占用了大量不同的时间。在Cypher的关系中我不明白这个问题
不到1秒,结果为5:
allshortestpaths((et)-[*]->(st))
不到1秒,结果为3:
allshortestpaths((et)<-[*]-(st))
永远(超时):
allshortestpaths((et)-[*]-(st))
为什么这需要永远。我认为这只需返回8个结果!!
完整的样本查询:
profile match (s:Stop)--(st:Stoptime),
(e:Stop)--(et:Stoptime)
where s.name IN [ 'Schlump', 'U Schlump']
and e.name IN [ 'Hamburg Hbf', 'Hauptbahnhof Nord']
match p = allshortestpaths((et)-[*]->(st))
return p
答案 0 :(得分:1)
使用allshortestpaths((et)-[*]->(st))
,您将看到如下所示的路径:(a)-->(b)-->(c)-->(d)
使用allshortestpaths((et)<-[*]-(st))
,您将看到一条如下所示的路径:(a)<--(b)<--(c)<--(d)
使用allshortestpaths((et)<-[*]-(st))
,您将拥有如下所示的路径:
(a)-->(b)-->(c)-->(d)
(a)<--(b)<--(c)<--(d)
(a)-->(b)<--(c)-->(d)
(a)<--(b)<--(c)-->(d)
(a)-->(b)-->(c)<--(d)
(a)-->(b)<--(c)--<(d)
你们有分歧吗?最后一个是比以前更复杂的查询,这就是为什么它可能需要很长时间,特别是当你没有指定关系类型和路径的最大深度时。
因此,您可以要求Neo4j遍历您的所有数据库......