我正在阅读有关优化查询的信息,并且遇到了一篇帖子,其中说到,密码执行者有时可能会错过使用索引,或者可能不会扫描所有标签而不是提供的标签,因此最好明确说明要使用的索引以及哪个索引标签进行扫描。 (这是我的理解)
所以当我尝试这样做时,它给了我这个错误
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
答案 0 :(得分:2)
如果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
使用一致的大小写。