по настройке Neo4j по умолчанию, я создать базу данных с запросомCypher запрос занимает слишком много времени
CREATE (R1:resource { name : '1' }),
(R2:resource { name : '2' }),
(R3:resource { name : '2' }),
(F1:facility { name : '1' }),
(F2:facility { name : '2' }),
(F10)-[:OUT]->(R6),
(R6)-[:IN]->(F3)
для простоты, я написал часть запроса. Чтобы объяснить, у меня есть 8 ресурсов и 25 объектов, средств или ресурсов с отношениями. У меня 1000 случайно сформированных отношений. Теперь я запрашиваю базу данных с
match (m:facility)-[:OUT]->(n:resource)
-[:IN]->(k:facility)-[:OUT]->(l:resource)
-[:IN]->(o:facility) return m,n,k,l,o
, но это занимает более 15 минут. Разве это не странно Пожалуйста, помогите Thx
Не странно, что это так много, так как вы получаете декартово произведение 4, поэтому O (n^4), что много. Вероятно, вы должны фильтровать узлы. Что именно вы пытаетесь получить с запросом? – zaboco
Я хочу увидеть возможные потоки ресурсов между объектами. Может быть, набор решений будет большим, но, как я читал в «графических базах данных» рудиллических книг, 800 тыс. Строк возвращались через 1-2 секунды. Они цитировались из Neo4j в действии. Они ошибаются? или я что-то пропустил? – kemals
Если у вас есть отношения ': IN' и': OUT', если возможны циклы в этом шаблоне отношений, то ваш запрос кажется, что он оценивает каждый путь между каждым набором узлов в вашей БД. Вы должны установить некоторые ограничения на то, что 'm', и вы должны, вероятно, указать' WHERE m <> k AND k <> o AND n <> l AND l <> o'. – FrobberOfBits