连接组件的Neo4j cypher查询速度太慢

时间:2017-12-07 14:19:29

标签: neo4j cypher

我正在寻求帮助来优化我的以下密码查询。

CALL algo.unionFind.stream()
YIELD nodeId,setId
MATCH(n) where ID(n) = nodeId AND NOT (n)-[:IS_CHILD_OF]-()
call apoc.create.uuids(1) YIELD uuid
WITH n as nod, uuid, setId
WHERE nod is not null
   MERGE(groupid:GroupId {group_id:'id_'+toString(setId)})
   ON CREATE set groupid.group_value = uuid, groupid.updated_at = '1512135348335'
   MERGE(nod)-[:IS_CHILD_OF]->(groupid)
RETURN count(nod);

我已经在group_id上应用了唯一约束和索引。即使我使用的是配置良好的机器i3-2xl。 对于~500k节点,上述查询花费的时间太长〜22分钟。

以下是我想通过上述查询实现的目标。

  1. 获取所有连接的组件(子图)。
  2. 为每个组(连接的组件)创建一个新节点。
  3. 将uuid指定为新组节点的值。
  4. 使用新的组节点与所有组成员建立关系。
  5. 欢迎任何建议优化上述查询,或者如果有其他方法可以实现我的上市要求,请告诉我。

0 个答案:

没有答案