Py2neo 请求所有关系的速度很慢

问题描述

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

当我在 neo4j 客户端界面上运行此查询时,结果在几秒钟内显示得非常快。

但是,当我使用带有 Graph.run("MATCH ()-[r]-() RETURN r") 的 py2neo 调用查询时,只需要很长时间来循环结果,无需任何处理。

你知道这是为什么吗?

解决方法

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

,

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

如果添加方向,您的查询应该会更快(返回的数据更少):

launch_background.xml

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