Что я делаю, так это получаю все профили*, которые имеют конкретное направленное отношение к профилю пользователя*, и если у них есть альтернативный профиль * получить их, если альтернативный профиль пользователя* имеет отношение к нему. Мне также нужно направление отношений.
Моя проблема в том, что при наличии около 10000 узлов получение данных занимает около 5 секунд. У меня есть автоматический индекс узлов и отношений.
Вот как связаны мои узлы:
Пользователь-[:profile]->ProfileA-[:related]->ProfileB‹-[?:me]->ProfileB2‹-[?:related]-ProfileA2‹-[:profile]-User
Мой запрос выглядит так:
START User=node({source})
MATCH User-[:profile]->ProfileA-[rel:related]->ProfileB
WHERE User-->ProfileA-->ProfileB
WITH ProfileA, rel, ProfileB
MATCH ProfileB<-[?:me]->ProfileB2<-[relB?:related]-ProfileA2<-[:profile]-User
WHERE relB IS NULL OR User-->ProfileA-->ProfileB<-->ProfileB2<--ProfileA2<--User
RETURN ProfileB, COLLECT(ProfileB2), rel, relB
LIMIT 25
Любая идея, как я могу оптимизировать запрос?
- профили: ProfileB
- профиль пользователя: ProfileA
- альтернативный профиль: ProfileB2
- альтернативный профиль пользователя: ProfileA2