我在一个大型EC2盒(244G Ram和32核)上有一个非常大的图形(1.4个Bil +节点)。该图的性质由6种类型的第三方ID和1个第一方ID(又名“用户”)组成。我正在尝试收集由2个或更多第三方ID连接的第一方ID集。我的查询速度很快,限制为40,但更改为限制100并没有完成。查询如下:
Match (u:User)-[]->(id)<-[]-(u2:User)
Match (u)-[]->(id2)<-[]-(u2)
WHERE u<>u2 and id<>id2
RETURN u,id,id2,u2
LIMIT 40
具有限制40的查询几乎立即返回,但是将限制更改为100会使查询永久运行。关于如何扩展此查询的任何想法吗?我的conf如下:
dbms.memory.heap.initial_size=150g
dbms.memory.heap.max_size=150g
dbms.memory.pagecache.size=60g
我发现问题与仅与少数第三方ID连接的100个第一方uid有关,有没有一种方法可以限制查询以忽略一些与100个第一方uid连接的第三方ID? / p>
答案 0 :(得分:0)
您在搜索类似的内容吗?
MATCH (u:User)-->(id)<--(u2:User),
(u)-->(id2)<--(u2)
WHERE NOT id(id)=id(id2) AND
id(u) < id(u2) AND
size((id)<--()) < 100 AND
size((id2)<--()) < 100
RETURN u,id,id2,u2
有两件事,有两个变化:
id(u) < id(u2)
是为了避免计算从u
到u2
,然后从u2
到u
的结果size((id)<--())
以避免超级节点