Neo4j 开始和匹配之间的宽查询是否存在性能或执行计划差异?

Neo4j 开始和匹配之间的宽查询是否存在性能或执行计划差异?,neo4j,cypher,Neo4j,Cypher,在执行查询的方式上,这两者之间是否存在有意义的差异 START n=node(*) RETURN n 开始n=节点(*)返回n 及 匹配n返回n 对于其他更具选择性的查询(例如,扫描具有特定属性和特定值的所有节点),我可以使用START子句通过auto_索引查找这些节点,也可以匹配它们。有什么区别吗?或者两者一样好吗?首先,Neo4j 2.0支持节点的模式索引,而旧版本支持传统索引 因此,这取决于您是否正在使用Neo4j 2.0,您可以直接从MATCH子句开始,并随附WHERE on some

在执行查询的方式上,这两者之间是否存在有意义的差异

START n=node(*) RETURN n 开始n=节点(*)返回n 及

匹配n返回n
对于其他更具选择性的查询(例如,扫描具有特定属性和特定值的所有节点),我可以使用START子句通过auto_索引查找这些节点,也可以匹配它们。有什么区别吗?或者两者一样好吗?

首先,Neo4j 2.0支持节点的模式索引,而旧版本支持传统索引

因此,这取决于您是否正在使用Neo4j 2.0,您可以直接从MATCH子句开始,并随附WHERE on some node属性,该属性将直接引用模式索引

如果您使用的是具有自动索引功能的旧版Neo4j,则必须使用START来使用索引

此外,您还需要特别提及索引名称和索引所基于的属性。但是,如果匹配,则会自动引用模式索引,无需明确提及

还要注意的另一点是,当前模式索引不适用于关系,而仅适用于节点。架构索引仅支持全名搜索。模式索引还不支持基于Lucene的通配符搜索。因此,同样取决于您的用例,您需要选择需要使用哪种索引,并基于此可以使用START或MATCH

MATCH n RETURN n