我正在做的是获取所有个人资料*与用户个人资料有特定直接关系的人*,如果这些个人资料有备用个人资料*获取那些以防用户备用个人资料*与它有关系。我还需要关系的方向。
我的问题是,大约 10000 个节点需要大约 5 秒才能获取数据。我对节点和关系有自动索引。
这就是我的节点的关联方式:
用户-[:profile]->ProfileA-[:related]->ProfileB<-[?:me]->ProfileB2<-[?:related]-ProfileA2<-[:profile]-User
我的查询如下所示:
START User=node({source})
MATCH User-[:profile]->ProfileA-[rel:related]->ProfileB
WHERE User-->ProfileA-->ProfileB
WITH ProfileA, rel, ProfileB
MATCH ProfileB<-[?:me]->ProfileB2<-[relB?:related]-ProfileA2<-[:profile]-User
WHERE relB IS NULL OR User-->ProfileA-->ProfileB<-->ProfileB2<--ProfileA2<--User
RETURN ProfileB, COLLECT(ProfileB2), rel, relB
LIMIT 25
知道如何优化查询吗?
- 个人资料:个人资料B
- 用户个人资料: ProfileA
- 备用配置文件:ProfileB2
- 用户备用个人资料: ProfileA2