2014-01-26 21 views

回答

2
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"}),但是如果模式的该部分中不包含(索引)属性,则将通过遍历到达节点,并且如果只有人朋友在hasLabel(b:Person)上的额外过滤器将是毫无意义的。

我明白this blog post意味着标签上的过滤与按位数&一样便宜,因此性能差异应该非常小。