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