本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用精細的關係名稱,避免多餘節點標籤檢查
最佳化效能時,使用節點模式獨有的關係標籤可移除節點上的標籤篩選。請考慮圖形模型,其中關係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
,則這兩個版本的查詢結果會有所不同。