neo4j CYPHER - Запрос отношения не заканчивается - PullRequest
0 голосов
/ 30 июня 2018

в базе данных 14 ГБ У меня есть несколько связей CITES:

MATCH p=()-[r:CITES]->() RETURN count(r)

91

Однако, когда я бегу

MATCH ()-[r:CITES]-() RETURN count(r)

загружается вечно и в конечном итоге вылетает при перезагрузке окна браузера (рабочий стол neo4j)

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

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

Шаблон, использованный для первого запроса, таков, что планировщик найдет этот счет в хранилище подсчетов, в транзакционно обновленном хранилище подсчетов различных вещей. Это быстрый поиск в постоянном времени.

Другой паттерн, если не указывать направление, не будет использовать поиск в хранилище счетчиков и на самом деле должен будет проходить по графику (начиная с каждого узла в графике), и это займет много времени по мере роста вашего графика.

Что касается того, что это возвращает, то на самом деле оно должно быть в два раза больше: отношений CITIES на вашем графике, поскольку без направления на отношения каждое отдельное отношение будет найдено дважды, поскольку один и тот же путь с началом и концом переключаемые узлы соответствуют данному шаблону

0 голосов
/ 01 июля 2018

Neo4j всегда выбирает узлы в качестве начальных точек для выполнения запроса. В вашем запросе, вероятно, механизм запросов касается всего графика, поскольку вы не добавляете ограничений на свойства узлов, метки и т. Д.

Я думаю, что вы должны указать метку хотя бы в своем первом узле в шаблоне.

MATCH (:Article)-[r:CITES]-() RETURN count(r)
...