Запросы Отношения очень медленные - PullRequest
0 голосов
/ 14 мая 2019

Я хочу создать новую таблицу на основе отношений после получения результатов. Запрос работает и выводит несколько результатов.

match (p:Person)-[r:LIVES]->(t:COUNTRY)<-[r2:LIVES]-(p2:Person)
where p<>p2 and r.year = r2.year and r.year >=2015 and r2.year>=2015
return p,r,t,r2,p2 limit 25;

Но сервер перестает отвечать, когда мне нужны все результаты.

match (p:Person)-[r:LIVES]->(t:COUNTRY)<-[r2:LIVES]-(p2:Person)
where p<>p2 and r.year = r2.year and r.year >=2015 and r2.year>=2015
return p,r,t,r2,p2;

Это в основном самосоединение "LIVES". Я много искал, но не нашел способа создать индексы для отношений.

Есть предложения?

1 Ответ

1 голос
/ 17 мая 2019

Так как кажется, что вы не привязаны к формату результатов, я хотел бы предложить альтернативный Cypher.

Дело в том, что в вашем шифре p и p2 в основном образуют декартово произведение людей того же года и страны. Так что на самом деле вам просто нужно сгруппировать людей по годам и странам, отфильтровать группы по одному, а затем каждая пара в этой сумке - это ваши p и p2 из вашего исходного запроса.

MATCH (p:Person)-[r:LIVES]->(t:COUNTRY)
WHERE r.year >=2015
WITH t, DISTINCT r.year as Year, COLLECT({n:p, r:r}) as people
WHERE SIZE(people) > 1
RETURN t, people
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...