Performance Neo4j遍历性能

Performance Neo4j遍历性能,performance,neo4j,cypher,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

我想执行一个无向遍历来提取通过某种关系连接的所有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的元素(仅在测试示例中!)。

是否为
在:节点(条目)上创建索引添加了索引

另外,根据路径中每个节点的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)
或者,如果您不想在客户机中实现唯一性

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