我正在寻求帮助来优化我的以下密码查询。
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分钟。
以下是我想通过上述查询实现的目标。
欢迎任何建议优化上述查询,或者如果有其他方法可以实现我的上市要求,请告诉我。