Optimization neo4j大型数据库的简单查询

Optimization neo4j大型数据库的简单查询,optimization,neo4j,out-of-memory,cypher,Optimization,Neo4j,Out Of Memory,Cypher,谁能给我解释一下: 在上,建议在搜索时使用节点标签 但是,当我在大型数据库(200万个节点)上执行此操作时: MATCH p=(n:Foo)-[r:Bar]->(m:Foo)(m)这取决于您的数据,但您可以尝试将该查询分解为多个部分,以实现最终结果 MATCH (m:Foo) WHERE SIZE( (m)<-[:Bar]-(:Foo) ) > 1 WITH m LIMIT 1 MATCH p = (n:Foo)-[r:Bar]->(m)<-[s:Bar]-(o:Foo)

谁能给我解释一下:

在上,建议在搜索时使用节点标签

但是,当我在大型数据库(200万个节点)上执行此操作时:


MATCH p=(n:Foo)-[r:Bar]->(m:Foo)(m)这取决于您的数据,但您可以尝试将该查询分解为多个部分,以实现最终结果

MATCH (m:Foo)
WHERE SIZE( (m)<-[:Bar]-(:Foo) ) > 1
WITH m LIMIT 1
MATCH p = (n:Foo)-[r:Bar]->(m)<-[s:Bar]-(o:Foo) 
RETURN p LIMIT 1
匹配(m:Foo)
其中尺寸((m)1
m限制为1

MATCH p=(n:Foo)-(r:Bar)->(m)您使用的是什么版本的neo4j?您是否尝试指定单指向关系?是的,我现在已经在描述中说明了这一点,版本3.0.7非常好,您的第一个建议一针见血(第二个建议给出了缓慢的哈希连接,我想它是等效的)
MATCH p = (n)-[r:Bar]->(m)<-[s:Bar]-(o) RETURN p LIMIT 1
MATCH (m:Foo)
WHERE SIZE( (m)<-[:Bar]-(:Foo) ) > 1
WITH m LIMIT 1
MATCH p = (n:Foo)-[r:Bar]->(m)<-[s:Bar]-(o:Foo) 
RETURN p LIMIT 1
MATCH (m:Foo)
WITH m
MATCH p = (n:Foo)-[r:Bar]->(m)<-[s:Bar]-(o:Foo) 
RETURN p LIMIT 1