我创建了具有以下列表属性的节点:地址。我正在寻找合并在其addrs属性中具有交集的所有节点。我目前正在使用以下查询来这样做:
MATCH (n:Node)
WITH n, n.addrs AS a1
MATCH (n2:Node)
WHERE n2.addrs <> n.addrs
WITH n, n2, a1, n2.addrs AS a2
WITH n, n2, a1, a2, apoc.coll.intersection(a1, a2) AS intr
WHERE size(intr) > 0
SET n.addrs = apoc.coll.union(a1, a2)
DELETE n2
此查询工作正常,但运行时间极长(在1000个节点上为150秒)。我正在使用的数据集有将近400万个条目,因此可伸缩性成为一个问题。
有什么方法可以优化此查询以获得更好的性能?