TLDR
查询MATCH (n) RETURN count(n)
扫描所有节点,我可以在O(1)中进行吗?
完整问题
我添加了数百万个节点来绘制图表并运行查询来计算它们
PROFILE
MATCH (n) RETURN count(n)
这导致所有节点扫描并花费2秒钟:
在标签和属性上添加索引不会改变情况
Indexes
ON :USER(userId) ONLINE (for uniqueness constraint)
Constraints
ON (user:USER) ASSERT user.userId IS UNIQUE
所以下一个查询也会在2秒内运行
PROFILE
MATCH (n: USER) RETURN count(n)
计算与
等查询的关系MATCH ()-[r]->() return count(r)
MATCH ()-[r:relation_type]->() return count(r)
同样导致5秒执行时间(3M关系)的类似计划
是否有更好的语法来查询将导致<节点/关系的计数。上)?或者我们应该永远不计算所有节点/关系?我想知道为什么索引不会覆盖这些查询以及阻止快速进行这些查询的原因。