在给定节点的N
跃点内查找所有节点的有效方法是什么?我的特定图形没有高度连接,即大多数节点只有2级,所以例如下面的查询只返回27个节点(如预期的那样),但它需要大约一分钟的运行时间和CPU挂钩:
MATCH (a {id:"36380_A"})-[*1..20]-(b) RETURN a,b;
所有引擎的时间都花在遍历上,因为如果我只是自己找到起始节点,结果会立即返回。
我真的只想要一组独特的节点和关系(用于可视化),所以我也尝试添加DISTINCT
以试图阻止它重新访问它之前看到的节点,但我看到了运行时没有变化。
答案 0 :(得分:2)
正如您所说,如果您的属性已被编入索引,那么单独匹配起始节点非常快且更快。
但是,您现在要做的是匹配图表中的整个模式。
保持对快速起点的想法:
MATCH (a:Label {id:"1234-a"})
一旦你通过WITH
将它传递给查询的其余部分WITH a
然后匹配您的快速起点的关系:
MATCH (a)-[:Rel*1..20]->(b)