【问题标题】:Neo4j Query taking too longNeo4j 查询耗时太长
【发布时间】:2015-07-11 00:07:20
【问题描述】:

我的查询需要 52 秒才能加载(返回 1419 行)

MATCH (sn:Snapshot)--(z:Requirement {type:'super'})--(m:Requirement {type:'sub'}) MATCH (m)-[r1]-(c:Code )-[rv1]-(sn) MATCH (m)-[r2]-(t:Test)-[rv2]-(sn) RETURN DISTINCT z AS super, COLLECT(DISTINCT m) AS sub, COLLECT(DISTINCT [c,r1,rv1]) AS code,COLLECT(DISTINCT [t,r2,rv2]) AS test

我有大约 634228 个关系和 91176 个节点。

我在节点上有索引,在关系上有自动索引。 我尝试了很多方法,但找不到减少时间的方法。

如果您需要更多信息,请告诉我,我是 Neo4j 的初学者。

谢谢。

【问题讨论】:

  • 您运行的是哪个 Neo4j 版本?你有:Requirement {type} 的索引吗?这是初始查询还是后续查询?请分享您的查询计划(以“PROFILE”为查询前缀)。
  • 版本 2.2.0。我没有 type 作为 :Requirement 的索引。我添加了它,但没有得到任何时间改进(仍然大约 50 秒)。这是一个后续查询,所以数据库已经被缓存了。运行配置文件后:CYPHER 2.2,计划者:COST。 58815057 总 db hits in 57774 ms oi59.tinypic.com/1zlqg3s.jpg 谢谢!
  • 我的数据模型已经过优化,可以防止重复并保存有关关系的信息。我应该修改它以获得更好的查询性能(但有很多数据冗余)?

标签: neo4j


【解决方案1】:

Cou 可以尝试降低基数,否则对于与 :Code 匹配的每个路径,它将执行与 :Test 的匹配。

MATCH (sn:Snapshot)--(z:Requirement {type:'super'})--(m:Requirement {type:'sub'})
WITH distinct z,m
MATCH (m)-[r1]-(c:Code)-[rv1]-(sn)
WITH m, COLLECT(DISTINCT [c,r1,rv1]) AS code
MATCH (m)-[r2]-(t:Test)-[rv2]-(sn)
RETURN z AS super, COLLECT(DISTINCT m) AS sub, code ,COLLECT(DISTINCT [t,r2,rv2]) AS test

【讨论】:

  • 我试过了,浏览器崩溃了 :( 时间太长了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2011-02-07
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多