Neo4j Cypher查询无限运行

时间:2019-02-22 01:24:35

标签: neo4j cypher

在过去的两天里,我多次在下面重新运行查询,Neo4j界面说它正在运行,但是好像它在无休止地运行。我已经运行了其他所有都返回输出的查询。我让查询运行了9个小时,但9个小时后仍在运行。我不确定是什么问题,但会有所帮助。 我正在运行Neo4j-community-2.3.12,它是一个较旧的版本,但是在我按照教程进行操作时,它应该可以正常工作,其余的查询也可以正常工作。

密码脚本-非常基本:

match p=(ione)-[:ResponseTo*]->(itwo)
where length(p)=9 with p
match (u)-[:CreateChat]->(i)
where i in nodes(p)
return count(distinct u);

查询图像不断运行:

Screenshot of neo4j query running endlessly

2 个答案:

答案 0 :(得分:1)

此查询看起来像一个无休止的循环。

我建议不要获取所有路径并稍后检查长度,而是获取所需长度的路径(9)。

另外,考虑在路径查询中添加标签。

match p=(ione)-[:ResponseTo*9]->(itwo)
with p
match (u)-[:CreateChat]->(i)
where i in nodes(p)
return count(distinct u); 

答案 1 :(得分:0)

正如Raj所指出的那样,您将要在其中使用标签,因为现在这是在进行所有性能不佳的全节点扫描。

我们还可以通过确保我们从先前匹配的节点开始i,而不是在匹配之后将其用作过滤器,来确保第二次匹配的性能更高:

match p=(ione)-[:ResponseTo*9]->(itwo)
unwind nodes(p) as i
with DISTINCT i
match (u)-[:CreateChat]->(i)
return count(distinct u);