使用精細的關係名稱,避免多餘節點標籤檢查 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用精細的關係名稱,避免多餘節點標籤檢查

最佳化效能時,使用節點模式獨有的關係標籤可移除節點上的標籤篩選。請考慮圖形模型,其中關係likes僅用於定義兩個person節點之間的關係。我們可以撰寫下列查詢來尋找此模式:

MATCH (n:person)-[:likes]->(m:person) RETURN n, m

n 和 m 上的person標籤檢查是多餘的,因為我們定義了 的關係,只有在兩者都屬於類型 時才會出現person。若要最佳化效能,我們可以按下列方式寫入查詢:

MATCH (n)-[:likes]->(m) RETURN n, m

當屬性專屬於單一節點標籤時,此模式也可以套用。假設只有person節點具有 屬性 email,因此驗證節點標籤相符項目person是多餘的。將此查詢寫入為:

MATCH (n:person) WHERE n.email = 'xxx@gmail.com' RETURN n

效率低於將此查詢寫入為:

MATCH (n) WHERE n.email = 'xxx@gmail.com' RETURN n

只有在效能很重要,而且在建模過程中有檢查,以確保這些邊緣標籤不會重複使用於涉及其他節點標籤的模式時,才應採用此模式。如果您稍後在其他節點標籤上引入email屬性,例如 company,則這兩個版本的查詢結果會有所不同。