Performance Neo4j查询性能问题

Performance Neo4j查询性能问题,performance,neo4j,cypher,Performance,Neo4j,Cypher,我在使用特定的Cypher命令时遇到一些性能问题 我查找未直接连接到I型特定节点集的R节点(这里,索引字段为“79”和“4”的节点),并希望最大化字段“分数”: 查询通常在1250ms内执行。 如果删除ORDERBY子句,请求时间将下降到130ms。 order子句在近3300个元素上迭代 你知道我怎样才能加快这个请求吗?我确信有一种方法可以使用另一种语法来执行此搜索。我认为这是正常的,通过删除顺序,他将返回他可以匹配的前5个节点。 通过添加orderby,它将强制加载所有可能的匹配节点,这取决

我在使用特定的Cypher命令时遇到一些性能问题

我查找未直接连接到I型特定节点集的R节点(这里,索引字段为“79”和“4”的节点),并希望最大化字段“分数”:

查询通常在1250ms内执行。 如果删除ORDERBY子句,请求时间将下降到130ms。 order子句在近3300个元素上迭代


你知道我怎样才能加快这个请求吗?我确信有一种方法可以使用另一种语法来执行此搜索。

我认为这是正常的,通过删除顺序,他将返回他可以匹配的前5个节点。 通过添加orderby,它将强制加载所有可能的匹配节点,这取决于时间将增加的“R”节点的数量

现在:

您是否使用PROFILE

你对I:index有索引/约束吗

您能否将您的查询稍微更改为:

MATCH (r:R), (i0:I { index:"79" }), (i1:I { index:"4" })
WHERE NOT EXISTS((r)--(i0)) 
AND NOT EXISTS((r)--(i1))
RETURN r.index
ORDER BY r.score DESC
LIMIT 5

你使用哪个版本?尝试更新到最新版本,也请在查询前加上`PROFILE'以共享您的可视化查询计划``

将其更改为:

MATCH (i0:I { index:"79" }), (i1:I { index:"4" })
MATCH (r:R) 
WHERE NOT r--i0 AND NOT r--i1
WITH r
ORDER BY r.score DESC
LIMIT 5
RETURN r.index

我对I和R上的索引字段都有一个唯一的限制。我的请求速度与您的请求版本几乎相同。然后我更新到2.3.0-M01,我有一个150毫秒的请求时间。这里有配置文件数据:
MATCH (i0:I { index:"79" }), (i1:I { index:"4" })
MATCH (r:R) 
WHERE NOT r--i0 AND NOT r--i1
WITH r
ORDER BY r.score DESC
LIMIT 5
RETURN r.index