Neo4j查询耗时太长
我有一个Neo4j图,它由总共100.000个用户和2.000.000个关系(用户之间的友谊)组成。 一个用户有大约20个朋友 现在,我想看看查找特定用户的朋友(深度1)、朋友的朋友(深度2)和朋友的朋友的朋友(深度3)需要多少时间 这是我运行的密码查询(针对id为86660的用户): 对于深度1Neo4j查询耗时太长,neo4j,Neo4j,我有一个Neo4j图,它由总共100.000个用户和2.000.000个关系(用户之间的友谊)组成。 一个用户有大约20个朋友 现在,我想看看查找特定用户的朋友(深度1)、朋友的朋友(深度2)和朋友的朋友的朋友(深度3)需要多少时间 这是我运行的密码查询(针对id为86660的用户): 对于深度1 MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User) RETURN u2.name 对于深度2 MATCH (u1:User{id
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)
RETURN u2.name
对于深度2
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)
RETURN u3.name
对于深度3
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)-[:FRIEND_OF]->(u4:User)
RETURN u4.name
深度1(它返回17个结果)和深度2(它返回320个结果)查询花费了几毫秒,而深度3是无止境的
我怎样才能在合理的时间内得到第三部门的结果
更新
通过个人资料,我得到了以下信息:
PROFILE
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)-[:FRIEND_OF]->(u4:User)
RETURN u4.name
显然这很有帮助
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF*3..3]->(u2:User) RETURN u2.name
我认为我的查询与你的查询之间的区别在于你映射了沿途的所有实体,而
[:FRIEND\u OF*3..3]
将我的查询限制为只检查3跳之外的实体。您可以找到更多信息您可以在查询中运行配置文件并发布扩展视图吗?我关闭了电脑,几分钟后重新启动(当时很热,cpu工作非常努力)。有一些进程在后台工作,这使我的计算机性能很差。我再次运行查询,耗时13秒。顺便说一下,我将更新我的问题,包括您要求的扩展视图。我想即使我用的是一台旧电脑,我也能做得比13秒更好。你能试试匹配(u1:User{idutene:“86660”})-[:FRIEND_OF*3..3]->(u2:User)返回u2.name
只是为了好玩我不知道它是否有用谢谢!是的,它有帮助(不到1秒)。我在哪里可以找到关于()-[:FRIEND\u OF*3..3]->()和()-[:FRIEND\u OF]->()-[:FRIEND\u OF]->()-[:FRIEND\u OF]->()之间区别的解释?