Neo4J:高效的邻居查询

时间:2014-12-26 15:19:30

标签: optimization neo4j cypher

在给定节点的N跃点内查找所有节点的有效方法是什么?我的特定图形没有高度连接,即大多数节点只有2级,所以例如下面的查询只返回27个节点(如预期的那样),但它需要大约一分钟的运行时间和CPU挂钩:

MATCH (a {id:"36380_A"})-[*1..20]-(b) RETURN a,b;

所有引擎的时间都花在遍历上,因为如果我只是自己找到起始节点,结果会立即返回。

我真的只想要一组独特的节点和关系(用于可视化),所以我也尝试添加DISTINCT以试图阻止它重新访问它之前看到的节点,但我看到了运行时没有变化。

1 个答案:

答案 0 :(得分:2)

正如您所说,如果您的属性已被编入索引,那么单独匹配起始节点非常快且更快。

但是,您现在要做的是匹配图表中的整个模式。

保持对快速起点的想法:

MATCH (a:Label {id:"1234-a"})

一旦你通过WITH

将它传递给查询的其余部分
WITH a

然后匹配您的快速起点的关系:

MATCH (a)-[:Rel*1..20]->(b)