【发布时间】:2019-01-07 18:59:45
【问题描述】:
我想找到从叶节点(E)到根节点(A)的所有路径。 (不适用于任何特定节点,因此此处没有 id 或字段过滤器)
数据模型如图所示。
我使用基本的 Cypher 查询来查找路径(A 到 E):
MATCH path=(:A)-[:USE*]->(:E) RETURN path
它一直在运行,永远不会结束。
我尝试使用以下方法获取从 C 到 E 的路径:
MATCH path=(:C)-[:USE*]->(:E) RETURN path
此查询最多需要 18 秒才能返回 18k 条路径。 我曾尝试使用 SCAN,但时间没有任何改善。
如何改进这种遍历以在更短的时间内返回结果? 我需要在 4-5 秒内得到结果。
系统配置:
系统内存为 32GB
存储:SSD
当前 Neo4j 会议:
堆大小: 初始-12GB 最大 12GB
缓存: 12GB
数据库大小:1.6GB
【问题讨论】:
-
除非您展开所有元素以显示运算符所作用的值,否则该查询计划没有用处。另外,当您说您正在使用扫描提示时,您能提供这里尝试过的内容吗?鉴于此模式,您可以查看从模式的开始节点或结束节点开始是否会影响性能。
标签: neo4j cypher neo4j-apoc