如何在Neo4j中优先过滤

时间:2018-03-03 12:15:26

标签: neo4j cypher

我正在进行查询优化,我需要优先考虑我的过滤器,即应用这些过滤器的顺序。例如,如果我有一个属性prop1和一个关系rel1,我需要首先在prop1上应用过滤器然后rel2,那么我该如何处理?

这是我的问题:

MATCH (e:Entity)
where e.prop1 > constant1
and (e)-[:rel1]->(:Entity2)
return e.entity_id

我需要这个,因为如果我首先应用prop1过滤器,那么搜索空间将大幅减少,这应该优化性能。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

约束按您指定的顺序应用。在您的情况下,首先执行e.prop1 > constant1

由于您正在使用AND运算符,因此当第一个测试(AND左侧的测试)失败时,不会执行第二个测试。请记住,使用AND时,两个条件(左侧和右侧)都应为true。否则,AND表达式将为false。这样,当第一个约束失败时,不需要执行第二个约束。