2013-09-01 55 views
1

假設一家公司擁有許多分支機構,而按名稱分支只屬於一家公司。假設分支的數量是〜200,並且多個公司可以存在相同的分支名稱,所以至多幾十個分支使用相同的名稱。帶索引的Neo4J密碼 - 使用哪種方法

假設分支名稱被索引,讓Neo4J通過名稱從索引加載分支節點並通過與公司的關係「計算出」更快,或者更好地將.name傳遞給條款?我試圖谷歌這個層次安排和手冊索引整合,但這種情況躲過了我,我敢肯定有人超級聰明才知道。

start branch=node:branchIndex(name="some string"), 
    company=node(nodeId) 
      match company-[r:owns]->branch 
      return branch 

start company = node(nodeId) 
      match company-[r:owns]->branch 
      where branch.name = "some string") 
      return branch 

回答

1

那麼,索引查找大約需要遍歷一個屬性1000倍。對於像(company)-[:owns]->(branch)這樣的較小遍歷,它將掃描可能少於1000個項目,我會說WHERE子句比索引查找便宜得多。

在Neo4j 2.0中,自動索引中將有足夠的統計信息僅使用WHERE,並且如果查詢統計信息更有效,則可以自動切換到索引查找。