目前我对Neo4j的2.2.2Neo4j的不使用索引
尝试此查询在这篇文章的时候,我们没有任何标记的节点然而,正如我们最近从1.x的Neo4j的升级所以我们没有选择使用USING子句。
我想使用索引,但结束了全表扫描。
START pfComp=node:Company('id:2403226') , ptComp=node:Company('id:1946633')
OPTIONAL MATCH
(pfComp)<-[c:CHILD_OF*]-(cfComp)
WITH collect(id(cfComp)) as cfCompIds, ptComp, pfComp
OPTIONAL MATCH
(ptComp)<-[c2:CHILD_OF*]-(ctComp)
WITH cfCompIds, collect(id(ctComp)) AS ctCompIds
MATCH
(fComp) -[fR:PARTICIPATES_IN]-> cdeals <-[tR:PARTICIPATES_IN]-(tComp)
WHERE
(fComp.id = 2403226 or id(fComp) in cfCompIds) and
(tComp.id = 1946633 or id(tComp) in ctCompIds)
RETURN fComp, tComp, cdeals
Cypher version:CYPHER 2.2,planner:COST。 1305292总分贝命中79128毫秒。
对此的任何帮助将不胜感激。
以下是完整的配置文件命令输出。
查询的开始部分执行快速:
profile START pfComp=node:Company('id:2403226') , ptComp=node:Company('id:1946633')
OPTIONAL MATCH
(pfComp)<-[c:CHILD_OF*]-(cfComp)
WITH collect(id(cfComp)) as cfCompIds, ptComp, pfComp
OPTIONAL MATCH
(ptComp)<-[c2:CHILD_OF*]-(ctComp)
return cfCompIds, collect(id(ctComp)) AS ctCompIds
Cypher支架版本:CYPHER 2.2,计划者:COST。在582毫秒内共有836个数据点击。
也许这里有一个错字?你可以使用你以前没有初始化过的标识符,所以它必须做一个非常糟糕的全面扫描并展开:'OPTIONAL MATCH(ptComp)< - [c2:CHILD_OF *] - (ctComp)' –
这些在这里有不一致的定义方式他们的查找,为财产查找你想念标签和ID()查找冲突与道具查找我会把它分成两个部分的工会 –
迈克尔汉格尔:查询的乞讨部分是好的: 个人资料START pfComp = node:Company('id:2403226'),ptComp = node:Company('id:1946633') OPTIONAL MATCH (pfComp)< - [c:CHILD_OF *] - (cfComp) WITH collect(id (cfComp))作为cfCompIds,ptComp,pfComp 可选匹配 (ptComp)< - [c2:CHILD_OF *] - (ctComp) 返回cfCompIds,collect(id(ctC) omp))AS ctCompIds 结果: Cypher版本:CYPHER 2.2,planner:COST。在582毫秒内共有836个数据点击。 –