Могу ли я использовать «USING SCAN ...» и «USING INDEX ...» в одном запросе шифра в neo4j? - PullRequest
0 голосов
/ 29 января 2019

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

Так что, когда я попытался это сделать, он выдал мне эту ошибку

Neo.DatabaseError.Statement.ExecutionFailed: Failed to fulfil the hints of the query.
Could not solve these hints: 'USING SCAN (some node)' 

У меня такой запрос:

MATCH (n:Label1)-[r:SOME_REL]->(n2:LABEL3)

Гдеn2 может иметь :Label2 и :Label3.

Я не могу выполнить эти запросы:

MATCH (n:Label1{property:val})-[r:SOME_REL]->(n2:LABEL3)
  USING INDEX n:Label1(property)
  USING SCAN n2:Label3
RETURN n

MATCH (n:Label1{property:val})-[r:SOME_REL]->(n2:LABEL3)
  USING SCAN n2:Label3
  USING INDEX n:Label1(property)
RETURN n

1 Ответ

0 голосов
/ 29 января 2019
Шаблон

A MATCH может использовать индекс (например, :Label1(property)), только если он указывает и метку, и значение свойства.Так, например, это будет работать:

MATCH (n:Label1 {property: 123})-[r:SOME_REL]->(n2:Label3)
USING INDEX n:Label1(property)
USING SCAN n2:Label3
RETURN n;

Примечание. В этом запросе также используется согласованная заглавная буква для Label3.

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