neo4j CYPHER-关系查询未完成

时间:2018-06-30 16:15:10

标签: neo4j cypher neo4j-desktop

在一个14 GB的数据库中,我有一些CITES关系:

MATCH p=()-[r:CITES]->() RETURN count(r)
  

91

但是,当我跑步

MATCH ()-[r:CITES]-() RETURN count(r)

它会永久加载,最终会因重新加载浏览器窗口(neo4j桌面)而崩溃

2 个答案:

答案 0 :(得分:2)

如果在每个查询前面加上EXPLAIN,则可以看到每个查询执行方式的差异。

第一个查询所使用的模式使得计划者可以在计数存储中找到该计数,计数存储是各种事物的计数的事务更新存储。这是快速的恒定时间查找。

当省略方向时,另一种模式将不使用计数存储查找,并且实际上必须遍历图形(从图形中的每个节点开始),并且随着图形的增长将花费很长时间。 / p>

关于返回的结果,它实际上应该是图形中:CITIES关系的数量的两倍,因为如果没有关系的方向,则每个单独的关系都会被发现两次,因为相同的路径以开始和结束为起点切换的节点都符合给定的模式。

答案 1 :(得分:1)

Neo4j始终选择节点作为查询执行的起点。在查询中,由于您没有在节点属性,标签等上添加限制,因此查询引擎可能正在触摸整个图形。

我认为您应该至少在模式的第一个节点中指定标签。

Visibility.GONE