START和MATCH之间的广泛查询是否存在性能或执行计划差异?

时间:2014-02-03 19:24:47

标签: neo4j cypher

在这两者之间执行查询的方式是否存在显着差异?

START n=node(*) RETURN n

MATCH n RETURN n

对于其他更具选择性的查询,(例如扫描具有特定值的特定属性的所有节点)我可以使用START子句通过auto_index找到这些节点,或者我可以匹配它们。是否存在差异,或者与另一个一样好?

1 个答案:

答案 0 :(得分:1)

首先,Neo4j 2.0支持节点的架构索引,而旧版本支持传统索引。

所以这取决于你是否使用Neo4j 2.0,你可以直接从MATCH子句开始,并在一些节点属性上附加一个WHERE,它将直接引用模式索引。

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

此外,您还需要特别提及索引名称和进行索引的属性。但在MATCH的情况下,模式索引会自动引用,无需明确提及。

另外需要注意的一点是,当前架构索引不适用于关系,但仅适用于节点。模式索引仅支持全名搜索。基于Lucene的外卡搜索尚未受到架构索引的支持。因此,根据您的使用情况,您需要选择需要使用的索引类型,并根据您可以使用START或MATCH。