首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j查询时间过长

Neo4j查询时间过长
EN

Stack Overflow用户
提问于 2017-03-01 15:43:43
回答 1查看 445关注 0票数 3

我有一个Neo4j图,它由总共100.000个用户和2.000.000个关系(用户之间的友谊)组成。一个用户大约有20种友谊。

现在,我试图了解找到特定用户的朋友(深度1)、朋友的朋友(深度2)和朋友的朋友(深度3)所需的时间。

这是我运行的密码查询(对于id为86660的用户):

深度1

代码语言:javascript
复制
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)
RETURN u2.name

深度2

代码语言:javascript
复制
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)
RETURN u3.name

深度3

代码语言:javascript
复制
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则是无穷无尽的。

如何在合理的时间内得到depth3的结果?

更新

通过侧写,我得到了这个:

代码语言:javascript
复制
PROFILE 
    MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)-[:FRIEND_OF]->(u4:User)
    RETURN u4.name

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-02 08:16:19

显然这很有帮助

代码语言:javascript
复制
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF*3..3]->(u2:User) RETURN u2.name

我认为我的查询和您的查询之间的区别是,您映射了整个过程中的所有实体,而[:FRIEND_OF*3..3]将我的查询限制为只检查距离为3跳的实体。你可以找到更多的信息,在文件中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42536070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档