Neo4J Cypher,在ID(N)处于条件下时指定标签的性能



是否有人测试/知道 - 在使用Cypher查询Neo4J数据库时 - 指定

MATCH node:labels

即使

使选择更快
WHERE id(node) = x

就位了吗?

MATCH (n)
WHERE ID(n) = {x}
RETURN n

应该比

快忽略
MATCH (n:MyLabel)
WHERE ID(n) = {x}
RETURN n

两个查询首先通过内部ID获取节点,但是当第一个查询返回第二个滤波时,第二个查询将 hasLabel(n:MyLabel)上的结果过滤。

这是一个可以过度使用标签的好例子。同样,如果对于模式(a:Person {name:"Étienne Gilson"})-[:FRIEND]->(b:Person)-[:FRIEND]->(c:Person),我知道只有:Person节点具有-[:FRIEND]-关系,则在该标签上过滤bc没有意义。如果应从索引中检索远程节点,则应包括标签以表明,即-[:FRIEND]->(b:Person {name:"Jacques Maritain"}),但是当该部分的该部分中不包含(索引)属性(索引)属性时,traversal才能达到节点,并且只有人们只有人才朋友hasLabel(b:Person)上的其他过滤器将毫无意义。

我理解这篇博客文章意味着在标签上的过滤与位&一样便宜,因此性能差异应该很小。

最新更新