Я хочу найти все пути от листового узла (E) до корневого узла (A). (Не для какого-либо конкретного узла, поэтому здесь нет фильтра идентификаторов или полей)
Модель данных показана на изображении.
Я использовал базовый запрос Cypher, чтобы найти пути (от A до E):
MATCH path=(:A)-[:USE*]->(:E) RETURN path
Он продолжает работать и никогда не завершается.
Я попытался получить пути от C до E, используя:
MATCH path=(:C)-[:USE*]->(:E) RETURN path
Этот запрос занимает до 18 секунд, чтобы вернуть 18 тыс. Путей. Я пробовал ИСПОЛЬЗОВАТЬ СКАНИРОВАНИЕ, но за это время никаких улучшений не произошло.
Как я могу улучшить этот обход, чтобы возвращать результаты за меньшее время? Мне нужно получить результат за 4-5 секунд.
Конфигурации системы:
Системная память 32 ГБ
Хранение: SSD
Текущая конфигурация Neo4j:
размер кучи: начальный - 12 ГБ, максимум - 12 ГБ
кэш: 12 ГБ
Размер базы данных: 1,6 ГБ