【问题标题】:neo4j cypher performance with multiple start nodes具有多个起始节点的 neo4j 密码性能
【发布时间】:2012-08-31 14:09:45
【问题描述】:

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 条件,第二个使用多个起始节点。

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

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

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

【问题讨论】:

  • Cypher 正在为 Neo4j 1.9.M01 中的两个起点使用新的双向模式匹配器,您可能想尝试一下并报告。

标签: neo4j cypher


【解决方案1】:

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

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

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

但这会在下一个版本中改变。我认为到目前为止我能给您的最佳建议是使用您的实际数据集来分析查询(如果您还没有预期的数据,请编写数据生成器)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多