在 Neo4j(3.0 版)中,以下查询返回相同的结果:
1. MATCH (a:Label) WHERE a.property = "Something" RETURN a
2. MATCH (a:Label {property: "Something"}) RETURN a
在处理一些大型数据集时,我注意到(并使用EXPLAIN
and验证PROFILE
)在某些情况下,像第二个这样的查询执行得更好更快。虽然存在两个版本表现相同的其他实例,但我还没有看到第一个版本表现更好的实例。
neo4j 的文档和教程也分门别类。两者之间没有明确的比较。docs 和 tuts 使用这两个版本,通常倾向于第一个(可能是因为非精确匹配只能使用该WHERE
子句完成)。但指南还指出,越早缩小搜索范围,搜索速度就越快。
- 我对这两个版本总是返回相同的结果是对的吗?
- 第二个版本通常会表现得更好,因为它更早地缩小了搜索范围,我说得对吗?