Оптимизация запросов Neo4j для слияния узлов - PullRequest
0 голосов
/ 23 июня 2019

Я создал узлы, которые имеют следующее свойство списка: addrs.Я ищу, чтобы объединить все узлы, которые имеют пересечение в свойстве 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

Этот запрос работает нормально, но выполняется очень долго (150 секунд на 1000 узлов).В наборе данных, с которым я работаю, содержится около 4 миллионов записей, поэтому масштабируемость становится проблемой.

Можно ли как-нибудь оптимизировать этот запрос для повышения производительности?

...