2016-12-24 73 views
0

我是Neo4j社区版3.1.0的新手,我试图创建一个高效的Cypher查询来匹配某种类型的关系(类型A )仅当节点之间当前具有(类型B)关系时。举例来说,我有什么现在的问题是:Cypher:返回它们之间具有另一种类型关系的节点之间的关系

MATCH (n)-[:B]-(m) 
WITH n,m 
MATCH (n)-[r:A]-(m) 
RETURN r 

在我的图表,有显著以上(B型)比(A型)的关系,所以我很担心我的查询将是因为它非常低效首先匹配所有(B型)关系。我的查询是否正确;如果是这样,我怎样才能使它更有效率?

+2

你看着Cypher支架的查询规划之前要考虑的关系的?它可能已经开始于更多地限制结果的关系,但至少你会知道并能够调查变化。见例如https://neo4j.com/blog/tuning-cypher-queries/ – jonrsharpe

回答

0

我觉得这是更好地只有一个像查询:

MATCH (n)-[r:A]-(m)-[:B]-(n) 
return r 

通过这种方式查询规划能关系B.