Neo4j/Cypher 简单查询索引扫描不起作用
Neo4j/Cypher simple query index scan doesn't work
我有一个简单的节点 User
,它具有 UserId
具有唯一约束设置的属性。
我开始分析我的查询并注意到每次我通过 UserId
NodeByLabelScan 而不是 NodeUniqueIndexSeek 对 User
节点执行匹配。
我尝试了下面最简单的匹配。
match (u:User {UserId:"id"}) return u
并且索引扫描不起作用。
如果我明确指定索引,一切正常。
match (u:User {UserId:"id"}) using index u:User(UserId) return u
谁能解释为什么会这样。
如果你有一定数量的相同标签的节点,Cypher 将默认使用 NodeUniqueIndexSeek
,如果我记得的话,在 2.2.5 版本中它是从 703 个节点开始触发的。
低于此阈值,使用索引或标签索引不会提高查询性能。
我有一个简单的节点 User
,它具有 UserId
具有唯一约束设置的属性。
我开始分析我的查询并注意到每次我通过 UserId
NodeByLabelScan 而不是 NodeUniqueIndexSeek 对 User
节点执行匹配。
我尝试了下面最简单的匹配。
match (u:User {UserId:"id"}) return u
并且索引扫描不起作用。
如果我明确指定索引,一切正常。
match (u:User {UserId:"id"}) using index u:User(UserId) return u
谁能解释为什么会这样。
如果你有一定数量的相同标签的节点,Cypher 将默认使用 NodeUniqueIndexSeek
,如果我记得的话,在 2.2.5 版本中它是从 703 个节点开始触发的。
低于此阈值,使用索引或标签索引不会提高查询性能。