Cypher查询需要花费太多时间

时间:2014-12-19 11:02:56

标签: neo4j cypher

在Neo4j的默认设置中,我使用查询

建立数据库
CREATE  (R1:resource { name : '1' }),
        (R2:resource { name : '2' }),
        (R3:resource { name : '2' }),
        (F1:facility { name : '1' }),
        (F2:facility { name : '2' }),
        (F10)-[:OUT]->(R6),
        (R6)-[:IN]->(F3)

为简单起见,我写了部分查询。为了解释,我有8个资源和25个设施,设施或资源与关系。我随机生成了1000个关系,现在我用

查询数据库
match (m:facility)-[:OUT]->(n:resource)
-[:IN]->(k:facility)-[:OUT]->(l:resource)
-[:IN]->(o:facility) return m,n,k,l,o 

但需要超过15分钟。这不奇怪 请帮忙 THX

1 个答案:

答案 0 :(得分:1)

您还可以在查询中添加LIMIT 100,并尝试在neo4j-shell中对其进行分析

你必须在爆炸组合宽度方面降低基数。

match (m:facility)-[:OUT]->(n:resource)-[:IN]->(k:facility)
with distinct m,collect(n) as resources_n,k
match (k)-[:OUT]->(l:resource)
with distinct with with distinct m,collect(resources_n,k) as flow, l
match (l)-[:IN]->(o:facility) 
return distinct m,flow,o
limit 100