我是Neo4j Community Edition 3.1.0的新用户,我正在尝试创建一个有效的Cypher查询,该查询只匹配节点之间某种类型(类型A)的关系,如果这些节点当前有一个(类型B)他们之间的关系。例如,我现在所拥有的是:
MATCH (n)-[:B]-(m)
WITH n,m
MATCH (n)-[r:A]-(m)
RETURN r
在我的图表中,((类型B)关系明显多于(类型A),所以我担心我的查询效率非常低,因为它首先匹配所有(类型B)关系。我的查询是否正确;如果是这样,我怎样才能提高效率呢?
答案 0 :(得分:0)
我认为最好只有一个查询:
MATCH (n)-[r:A]-(m)-[:B]-(n)
return r
通过这种方式,查询计划程序可以在关系B之前考虑关系A.