У меня есть этот запрос, возвращающийся очень быстро, 0,5 секунды и возвращающий все 303 ожидаемых отчета. Примечание: «Вока» здесь означает «Книга».Neo4j - не знаю, как улучшить запрос cypher
MATCH (p:Publisher)-[r:PUBLISHED]->(w:Woka)<-[s:AUTHORED]-(a:Author),
(l:Language)-[t:USED]->(w:Woka)-[u:INCLUDED]->(b:Bisac)
WHERE (a.author_name = 'Camus, Albert')
RETURN w.woka_id as woka_id, p.publisher_name as publisher_name, w.woka_title as woka_title, a.author_name as author_name, l.language_name as language_name, b.bisac_code as bisac_code, b.bisac_value as bisac_value
ORDER BY woka_id;
И я хочу добавить дополнительную информацию, например, описание. У меня есть созданные узлы описания и созданные отношения, между языком и описанием, описанием и книгой (Woka). В нижеприведенном запросе все описания указаны как null, но только для 60 записей вместо 303. Это связано с тем, что не все книги имеют описание. Время выполнения все еще в порядке, 0,3 секунды.
MATCH (p:Publisher)-[r:PUBLISHED]->(w:Woka)<-[s:AUTHORED]-(a:Author),
(l:Language)-[t:USED]->(w:Woka), (b:Bisac)<-[u:INCLUDED]-(w:Woka),
(d:Description)-[v:HAS_DESCRIPTION]-(w)
WHERE (a.author_name = 'Camus, Albert')
RETURN w.woka_id as woka_id, p.publisher_name as publisher_name, w.woka_title as woka_title, a.author_name as author_name, l.language_name as language_name, b.bisac_code as bisac_code, b.bisac_value as bisac_value, d.description as description
ORDER BY woka_id;
Однако я знаю, что некоторые из записей исключены из набора результатов, разница между 50 и 303 действительно есть описание. Я создаю другой запрос, используя OPTIONAL, но этот (показанный ниже) никогда не возвращается, работает навсегда.
MATCH (p:Publisher)-[r:PUBLISHED]->(w:Woka)<-[s:AUTHORED]-(a:Author),
(l:Language)-[t:USED]->(w:Woka)-[u:INCLUDED]->(b:Bisac)
OPTIONAL MATCH (d:Description)-[v:HAS_DESCRIPTION]-(w:Woka)-[:AUTHORED]-(a:Author)
WHERE (a.author_name = 'Camus, Albert')
RETURN w.woka_id as woka_id, p.publisher_name as publisher_name, w.woka_title as woka_title, a.author_name as author_name, l.language_name as language_name, b.bisac_code as bisac_code, b.bisac_value as bisac_value, d.description as description
ORDER BY woka_id;
Не знаю, как улучшить запрос, чтобы получить дополнительные описания, где существует и аннулирует, когда они не существует для первоначального набора результатов 303 записей?
Почему вы используете версию? –