Py2neo请求所有关系缓慢



我想用密码查询MATCH ()-[r]-() RETURN r列出我的图中大约20000条边的所有关系。对于每个关系,我想获得关系类型、它的属性、源节点ID、目标节点ID。

当我在neo4j客户端接口上运行这个查询时,结果在几秒钟内就出现了。

然而,当我用py2neo和Graph.run("MATCH ()-[r]-() RETURN r")调用这个查询时,它需要很长时间才能循环结果,而不需要任何处理。

你知道为什么吗?

您的查询实际上正在做额外的工作。因为关系在模式中不是定向的,所以每个关系返回两次,只是开始和结束节点翻转(记住,路径由有序节点组成,因此顺序翻转后,每次配对将得到两个不同的路径)。

你的查询应该走得快一点(更少的数据返回),如果你添加方向:

Graph.run("MATCH ()-[r]->() RETURN r")

另外,Neo4j浏览器限制了结果(默认情况下,图形结果视图有300个节点,我认为表或文本结果视图有1000个节点)。因此,根据总结果,Neo4j浏览器可能运行得更快,因为它没有处理和返回所有结果。

如果您还没有升级到最新版本,请升级。在上一个补丁中,为读取结果添加了一些显著的性能改进。

最新更新