2015-11-14 40 views
2

在我們公司,我們通過網絡服務向客戶返回一個ID列表。這些ID在整個系統中是唯一的。他們調用其他通過ID的Web服務。我們並不總是知道我們收到的ID的標籤。Neo的全球索引

這並不執行:

MATCH(n {id:{my_id}) ... 

雖然我們在幾乎所有的標籤類型的索引,這個查詢沒有標籤,並且因此,據我可以告訴不使用索引。

向所有節點添加一個名爲「GLOBAL」(或其他)的標籤是不是一個好主意,因此我們可以對GLOBAL.id添加一個唯一約束?然後上面的查詢可能是

MATCH(n: GLOBAL{id:{my_id}})... 

並且表現很好。

還有別的辦法嗎?

回答

0

您可以使用Neo4j的內部ID來識別你的資源,但它不是最好的做法,看Should we use the Neo4J internal id?

這是如何使用他的Neo4j的內部ID獲取一個節點:

START n=node({my_id}) return n 

這真是快而不是MATCH子句,因爲這裏的查詢直接從一個節點開始,並且不必過濾一組節點上的屬性,因爲它是內部ID。

如果您可以處理內部ID限制,這是您正在尋找的解決方案。

+0

根據最佳實踐建議,我們已停止使用內部標識(特別是與客戶共享時)。 –