【发布时间】:2016-01-26 16:14:49
【问题描述】:
我有一个简单的节点 User,它具有 UserId 属性,该属性具有唯一的约束设置。
我开始分析我的查询,并注意到每次我对 User 节点执行匹配时,都会执行 UserId NodeByLabelScan 而不是 NodeUniqueIndexSeek。
我在下面尝试了最简单的匹配。
match (u:User {UserId:"id"}) return u 和索引扫描不起作用。
如果我明确指定索引,一切正常。
match (u:User {UserId:"id"}) using index u:User(UserId) return u
谁能解释一下为什么会这样。
【问题讨论】:
-
你有多少个用户节点?可能是基于成本的查询计划器认为/知道只有很少的标记节点,因此使用索引没有好处。您可以尝试使用基于规则的规划器(将 CYPHER planner=rule 添加到 Cypher 查询中)吗?
标签: neo4j cypher graph-databases