如何提高neo4j中密码查询的速度?

use*_*919 1 neo4j cypher

我建立了一个具有14k节点和15k关系的Neo4J数据库。当我运行此查询时:

  MATCH (n:RealNode {gid:'12'})<-[:contains*..4]->(z) RETURN DISTINCT ID(z), z.id,n.id as InternalID
Run Code Online (Sandbox Code Playgroud)

得到回复需要5秒钟以上的时间。如果我将4更改为10,则需要花费更多。

我附上了特定节点的节点和关系的屏幕截图:

在此处输入图片说明

我的n:RealNode是粉红色的节点,具有CONTAINS关系的节点是灰色的节点。

我的问题如下:1)如何优化查询速度(除索引外)。2)如果我所有的灰色节点都直接位于粉红色节点下,速度会有所不同吗?

Chr*_*sen 5

正如您所说的“除索引外”,我假设您对:RealNode(gid)有正确的架构索引

但是,您的查询将不使用索引,因为您可以在整个模式上进行匹配(对于Neo4j <2.2M04有效)

您可以通过首先匹配您知道的部分来更好地拆分查询:

MATCH (n:RealNode {gid:'12'})
MATCH (n)-[:contains*..4]-(z) RETURN DISTINCT ID(z), z.id,n.id as InternalID
Run Code Online (Sandbox Code Playgroud)

我也从路径中删除了箭头,没有必要在两侧设置箭头,只需将它们忽略即可。

如果仍然存在性能问题,请在neo4j-shell中共享您正在使用的版本JAVA堆设置以及查询的PROFILE输出