2014-01-26 54 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意味着標籤上的過濾與按位數&一樣便宜,因此性能差異應該非常小。