performance - Neo4j 遍历性能

标签 performance neo4j cypher

我想执行无向遍历以提取通过某种类型的关系连接的所有 id

当我执行以下查询时,它返回的值足够快

MATCH path=(s:Node {entry:"a"})-[:RelType*1..10]-(x:Node) 
RETURN collect(distinct ID(x))

然而做
MATCH path=(s:Node {entry:"a"})-[:RelType*]-(x:Node) 
RETURN collect(distinct ID(x))

需要大量的时间。我怀疑通过使用 *它搜索从 s 到 x 的每条路径,但由于我只想要 id,这些路径可以被丢弃。我真正想要的是 BFS 或 DFS 搜索以从 s 中查找连接节点。

两个查询都返回完全相同的结果,因为没有最短路径大于 5 的元素(仅在测试示例中!)。

最佳答案

您是否为 create index on :Node(entry) 添加了索引? ?

还取决于路径中每个节点的 rels 数,您会通过可能返回的图形获得 rels^10(或一般 rels^steps)路径。

您可以先尝试使用较小的上限,例如 3,然后从那里开始工作吗?

离开方向真的很痛苦,因为你会得到周期。

您还可以尝试做的是:

MATCH path=(s:Node {entry:"a"})-[:RelType*]->(x:Node) 
RETURN ID(X)

并流式传输结果并在客户端中执行唯一性

或者如果你不想在客户端做唯一性
MATCH path=(s:Node {entry:"a"})-[:RelType*]->(x:Node) 
RETURN distinct ID(X)

关于performance - Neo4j 遍历性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459807/

相关文章:

linux - 以特定速度执行 stdout 输出

java - 如何配置GC不让世界停止?

neo4j - SDN4 : Recent snapshot build broken

neo4j - Neo4j 社区 3.0 中的事务日志记录

neo4j - Neo4j 密码中的三元运算符/默认值

r - 查找经理经理 ID 的有效方法

Neo4j深层层次结构查询

java - Rest WS 中的动态请求参数

neo4j - 使用 Neo4j 中的标签列表遍历图表

c++ - std::move() 作为性能瓶颈?