Performance Neo4j遍历性能
我想执行一个无向遍历来提取通过某种关系连接的所有ID 当我执行以下查询时,它返回值的速度足够快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
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)