apoc dijkstra 的简单 Cypher 查询 FOREVER

Simple Cypher Query for apoc dijkstra taking FOREVER

可能是我太笨了,或者 Neo4j 速度不快。 (免责声明:我是 Neo4j 菜鸟)

我有以下简单的 dijkstra 查询,它永远需要 运行。我必须至少等待 5-10 分钟 才能 execute.Sometimes 我的 Chrome 浏览器因此而崩溃。

示例图

密码查询

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;

计算机配置

我在 windows 机器上使用 Ubuntu VM,它有 24GB Ram 和 6 个 Cpus。

索引

系统信息

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

个人资料

看在上帝的份上,我想不通瓶颈 在哪里。我已经检查了所有其他答案,但无济于事。

由于我没有数据集来验证我的建议,所以我只能为您指出我会寻找的方向。希望它能引导您找到答案。

在查看配置文件和查询时,我看到 startNode 和 endNode 都是 :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 行?如果是后者,您可以 运行 不使用 OR 的查询:

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

查看探查器得出的结果。

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

也许吧 其中 endNode.name = 'Hauptbahnhof Süd' 和 startNode.name 在 ['Schlump','U Schlump']

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

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

祝你好运!