1

http://console.neo4j.org/r/8mkc4z

在上面的grpah中,查询的目的

start n=node(1) match n-[:KNOWS]->m-[:KNOWS]->p where p.name='Cypher' return n, m, p

就是找到 m,这样 Neo 知道 m,m 知道 Cypher。

通过以下查询也可以实现相同的目的 -

start n=node(1), p=node(4) match n-[:KNOWS]->m-[:KNOWS]->p return n, m, p

第一个使用 where 条件,第二个使用多个起始节点。

从性能的角度来看,哪一个应该运行得更快,并且可能在什么场景下运行。

我遇到了多个起始节点的性能问题,而我认为,逻辑上将其作为起始节点而不是条件应该更快的地方。

是否有根据不同场景使用哪种方法的规则。

4

1 回答 1

1

到目前为止,我们一直致力于加密语言,在 1.8 中添加了更新功能。

在 Neo4j 1.9 中,我们将关注密码性能。

到目前为止,具有单个起点的模式匹配器比具有多个起点的模式匹配器更快。尽管如此,如果仅在事后进行过滤(例如在您的第一个查询中),它们的执行速度可能仍然较慢(取决于结果量)。

但这将在下一个版本的过程中改变。我认为到目前为止我能给你的最好的提示是用你的真实数据集来分析查询(如果你还没有预期的数据,请编写数据生成器)。

于 2012-09-02T21:29:21.590 回答