有沒有人測試/如果知道 - 查詢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意味着標籤上的過濾與按位數&
一樣便宜,因此性能差異應該非常小。