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条件,第二个使用多个起始节点。
从性能角度来看,哪一个应该运行得更快,并且可能在什么情况下运行。
我遇到了多个启动节点的性能问题,而我认为,逻辑上将它作为起始节点而不是条件应该更快。
是否有基于不同场景的使用方法的规则。
答案 0 :(得分:1)
到目前为止,我们一直在使用cypher语言,在1.8中添加更新功能。
在Neo4j 1.9中,我们将专注于密码性能。
到目前为止,具有单个起点的模式匹配器比具有多个起点的模式匹配器更快。如果过滤仅在事后进行(如在第一次查询中),它们仍可能执行得更慢(取决于结果量)。
但这会在下一个版本的过程中发生变化。我认为到目前为止我能给你的最好的建议是用你的真实数据集来描述查询(如果你还没有预期的数据,写入数据生成器)。