Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j apoc dijkstra的简单密码查询需要永远_Neo4j_Cypher_Query Optimization_Gtfs - Fatal编程技术网

Neo4j apoc dijkstra的简单密码查询需要永远

Neo4j apoc dijkstra的简单密码查询需要永远,neo4j,cypher,query-optimization,gtfs,Neo4j,Cypher,Query Optimization,Gtfs,也许我很笨,或者Neo4j不应该很快。免责声明:我是Neo4j noob 我有下面这个简单的dijkstra查询,它需要花费很长时间才能运行。我必须至少等待5-10分钟才能执行。有时我的Chrome浏览器会因此崩溃 样本图 密码查询 计算机配置 我在windows机器上使用一个Ubuntu虚拟机,它有24GB内存和6个CPU 索引 系统信息 当我对上述查询运行profile时,我得到以下信息: 配置文件信息 看在上帝的份上,我想不出瓶颈在哪里。我已经检查了关于这个问题的所有其他答案,但没有结果

也许我很笨,或者Neo4j不应该很快。免责声明:我是Neo4j noob

我有下面这个简单的dijkstra查询,它需要花费很长时间才能运行。我必须至少等待5-10分钟才能执行。有时我的Chrome浏览器会因此崩溃

样本图

密码查询

计算机配置

我在windows机器上使用一个Ubuntu虚拟机,它有24GB内存和6个CPU

索引

系统信息

当我对上述查询运行profile时,我得到以下信息:

配置文件信息


看在上帝的份上,我想不出瓶颈在哪里。我已经检查了关于这个问题的所有其他答案,但没有结果

因为我没有数据集来测试我的建议,所以我只能给你指出我要看的方向。希望它能引导你找到答案

在查看概要文件和查询时,我看到startNode和endNode都是type:Stop,并且Stop.name属性被索引

查找endNode.name='Hauptbahnhof Süd'时,估计有3行,返回3行

但是,在查找startNode.name='Schlump'或startNode.name='U Schlump'时,估计有6行,但返回了14827行

是否确实存在包含“Schlump”或“U Schlump”的14827:Stop节点

或者是估计的6行?如果是后者,您是否可以在不使用或的情况下运行查询:

其中endNode.name='Hauptbahnhof Süd'和startNode.name='Schlump'

查看探查器得出的结果

如果它按预期执行,那么解决方案可能是重写查询以包含该查询,或者以不同的格式包含逻辑

或许 其中endNode.name='Hauptbahnhof Süd'和startNode.name位于['Schlump','U Schlump']

还发现这表明OR运算符和3.2之前的索引存在问题

我记得最近看到另一个关于OR问题的答案,但现在似乎找不到


祝你好运

是否可以用扩展计划替换当前查询计划?现在我们只能看到行和db点击,但我们看不到它们如何与查询中的变量和运算符对应。请展开所有计划元素并将其添加到.Done中。这就是你要找的吗?是的,谢谢。至于瓶颈,您可以从查询中看出这是因为在过程运行之前生成的行数或行数造成的。您有510万行,这意味着该过程将运行510万次,每行一次。您是否希望在该点生成许多行?如果没有,则可能与您如何执行匹配有关。长时间运行的查询最好通过cypher Shell执行估计行数只是一个粗略估计,用于在执行查询之前指导成本计划员;它通常与操作获得的实际行数不完全匹配。参考资料:谢谢你建议我不要使用,或者,我每次都更改了它。我希望更改为不使用或加快查询?嗨,它没有改变我的查询时间,但至少它使代码更干净了。谢谢
profile MATCH  (startNode:Stop)--(st:Stoptime),
(endNode:Stop)--(et:Stoptime)
where  endNode.name = 'Hauptbahnhof Süd' and 
(startNode.name = 'Schlump' or startNode.name = 'U Schlump')     
call apoc.algo.dijkstra(st, et, 'PRECEDES', 'weight') YIELD path, weight
return startNode, endNode, path, weight
limit 100;