Neo4J cypher带索引-哪种方法
假设一家公司拥有多个分支机构,而一个名称上的分支机构只属于一家公司。假设分支机构的数量约为200家,多家公司可以有相同的分支机构名称,因此最多有几十家分支机构使用相同的名称 考虑到分支名称已编制索引,让Neo4J从索引中按名称加载分支节点并通过与公司的关系“找出”是否更快,还是最好在where子句中传递.name?我试图在谷歌上搜索这个层次结构,并在手册中与索引进行集成,但这个场景让我无法理解,我相信超级聪明的人一定知道Neo4J cypher带索引-哪种方法,neo4j,cypher,Neo4j,Cypher,假设一家公司拥有多个分支机构,而一个名称上的分支机构只属于一家公司。假设分支机构的数量约为200家,多家公司可以有相同的分支机构名称,因此最多有几十家分支机构使用相同的名称 考虑到分支名称已编制索引,让Neo4J从索引中按名称加载分支节点并通过与公司的关系“找出”是否更快,还是最好在where子句中传递.name?我试图在谷歌上搜索这个层次结构,并在手册中与索引进行集成,但这个场景让我无法理解,我相信超级聪明的人一定知道 start branch=node:branchIndex(name="s
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
嗯,索引查找所需的时间大约是遍历属性所需时间的1000倍。对于较小的遍历,如
(company)-[:owns]->(branch)
,它将扫描可能少于1000个项目,我认为WHERE子句比索引查找便宜得多
在Neo4j 2.0中,自动索引中有足够的统计信息仅用于WHERE,如果查询统计信息更有效,则可以自动切换到索引查找。嗯,索引查找所需的时间大约是遍历属性所需时间的1000倍。对于较小的遍历,如
(company)-[:owns]->(branch)
,它将扫描可能少于1000个项目,我认为WHERE子句比索引查找便宜得多
在Neo4j 2.0中,自动索引中有足够的统计信息,仅用于WHERE,如果查询统计信息更有效,则可以自动切换到索引查找