Шаблон Neo4j Cypher: отказоустойчивый на шаблоне из нескольких частей - PullRequest
0 голосов
/ 03 октября 2018

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

MATCH (m:EntityX {indexed_property: 1234})-[]->(a0),
(a0:EntityY)-[]-(a1:Entity:Y),
(a1:EntityY)-[]-(a2:Entity:Y),
...
RETURN m

Теперь я чувствую, что запросы выполняются медленно, поскольку весь шаблон обрабатываетсяоценивается, несмотря на то, что большинство запросов завершится с ошибкой (создаст 0 строк) в первой части шаблона.Итак, как можно гарантировать, что шаблон будет работать быстро в (m:EntityX {indexed_property: 1234})-[]->(a0) части?

1 Ответ

0 голосов
/ 04 октября 2018

В своем запросе вы определяете шаблон, и планировщик запросов пытается найти наилучшую отправную точку для вашего запроса.

К сожалению, вы не расширили все поля в своем профиле, поэтому я не вижу, что делает план запроса.

Но, чтобы ответить на ваш вопрос, вы можете разделитьваш шаблон, используя WITH в шифре.

Так что если вы уверены, что первый шаблон создает хороший фильтр, то вы можете сделать что-то вроде этого:

MATCH (m:EntityX {indexed_property: 1234})-->(a0:EntityY)
WITH m, ao
 MATCH (a0)--(a1:Entity:Y),
       (a1)--(a2:Entity:Y)
 ...

Cheers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...