在过去的两天里,我多次在下面重新运行查询,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);
查询图像不断运行:
答案 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);