【问题标题】:Neo4J cypher with index - which approach带索引的 Neo4J 密码 - 哪种方法
【发布时间】:2013-09-01 06:01:45
【问题描述】:

假设一家公司拥有许多分公司,而分公司的名称只属于一家公司。假设分支机构的数量约为 200 个,并且多个公司可以存在相同的分支机构名称,因此最多有几十个分支机构使用相同的名称。

鉴于分支名称已编入索引,是让 Neo4J 从索引中按名称加载分支节点并通过与公司的关系“弄清楚”更快,还是在 where 子句中传递 .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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    嗯,索引查找比遍历属性花费的时间大约是 1000 倍。对于像 (company)-[:owns]->(branch) 这样较小的遍历,它可能会扫描不到 1000 个项目,我会说 WHERE 子句比索引查找便宜得多。

    在 Neo4j 2.0 中,自动索引中将有足够的统计信息仅使用 WHERE,如果查询统计信息更高效,则可以自动切换到索引查找。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多