有没有人测试/如果知道 - 查询Neo4j的数据库暗号时 - 指定Neo4j的暗号,在指定标签的性能时,ID(n)是条件
MATCH node:labels
使选择更加迅速,即使
WHERE id(node) = x
是否到位?
有没有人测试/如果知道 - 查询Neo4j的数据库暗号时 - 指定Neo4j的暗号,在指定标签的性能时,ID(n)是条件
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]-
关系,那么在该标签上过滤b
和c
没有意义。如果应该从索引中检索远程节点,那么应该包含标签以指示该标签,即-[:FRIEND]->(b:Person {name:"Jacques Maritain"})
,但是如果模式的该部分中不包含(索引)属性,则将通过遍历到达节点,并且如果只有人朋友在hasLabel(b:Person)
上的额外过滤器将是毫无意义的。
我明白this blog post意味着标签上的过滤与按位数&
一样便宜,因此性能差异应该非常小。