gpt4 book ai didi

performance - Neo4j 遍历性能

转载 作者:行者123 更新时间:2023-12-01 03:51:20 25 4
gpt4 key购买 nike

我想执行无向遍历以提取通过某种类型的关系连接的所有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com