Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4J cypher带索引-哪种方法_Neo4j_Cypher - Fatal编程技术网

Neo4J cypher带索引-哪种方法

Neo4J cypher带索引-哪种方法,neo4j,cypher,Neo4j,Cypher,假设一家公司拥有多个分支机构,而一个名称上的分支机构只属于一家公司。假设分支机构的数量约为200家,多家公司可以有相同的分支机构名称,因此最多有几十家分支机构使用相同的名称 考虑到分支名称已编制索引,让Neo4J从索引中按名称加载分支节点并通过与公司的关系“找出”是否更快,还是最好在where子句中传递.name?我试图在谷歌上搜索这个层次结构,并在手册中与索引进行集成,但这个场景让我无法理解,我相信超级聪明的人一定知道 start branch=node:branchIndex(name="s

假设一家公司拥有多个分支机构,而一个名称上的分支机构只属于一家公司。假设分支机构的数量约为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

嗯,索引查找所需的时间大约是遍历属性所需时间的1000倍。对于较小的遍历,如
(company)-[:owns]->(branch)
,它将扫描可能少于1000个项目,我认为WHERE子句比索引查找便宜得多


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

嗯,索引查找所需的时间大约是遍历属性所需时间的1000倍。对于较小的遍历,如
(company)-[:owns]->(branch)
,它将扫描可能少于1000个项目,我认为WHERE子句比索引查找便宜得多

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