Уважаемые эксперты Cypher / Neo4j,
У меня есть следующая часть графика, на которой смоделированы страны, города, компании и проекты. У меня есть следующий запрос Cypher, в котором я получаю узлы страны, а также уникальные идентификаторы содержащихся узлов города, количество LOCATED_IN и количество отношений MAY_BE_EXECUTED_IN
MATCH (country:Country)
OPTIONAL MATCH (country)-[:CONTAINS]->(city:City)
OPTIONAL MATCH (:Project)-[may_be_executed_in:MAY_BE_EXECUTED_IN]->(country)
OPTIONAL MATCH (:Company)-[located_in:LOCATED_IN]->(country)
RETURN DISTINCT country {.*
, city: COLLECT(DISTINCT city.identifier)
, MAY_BE_EXECUTED_IN_Count: COUNT(DISTINCT may_be_executed_in)
, LOCATED_IN_Count: COUNT(DISTINCT located_in)
}
ORDER BY country.identifier ASCENDING
извлечение графика
В базе данных 76 узлов страны и около 10000 узлов компании. Когда я запускаю запрос, это занимает от 30 до 40 секунд, когда я оставляю часть MAY_BE_EXECUTED_IN_Count: COUNT(DISTINCT may_be_executed_in)
, запрос завершается примерно за 40 миллисекунд. Я понимаю, что ресурсы, выделенные neo4j, играют роль, но я предполагаю, что мой запрос не подходит. Любая помощь будет принята с благодарностью.