我正在进行查询优化,我需要优先考虑我的过滤器,即应用这些过滤器的顺序。例如,如果我有一个属性prop1
和一个关系rel1
,我需要首先在prop1
上应用过滤器然后rel2
,那么我该如何处理?
这是我的问题:
MATCH (e:Entity)
where e.prop1 > constant1
and (e)-[:rel1]->(:Entity2)
return e.entity_id
我需要这个,因为如果我首先应用prop1
过滤器,那么搜索空间将大幅减少,这应该优化性能。有人可以帮帮我吗?
答案 0 :(得分:1)
约束按您指定的顺序应用。在您的情况下,首先执行e.prop1 > constant1
。
由于您正在使用AND
运算符,因此当第一个测试(AND左侧的测试)失败时,不会执行第二个测试。请记住,使用AND
时,两个条件(左侧和右侧)都应为true
。否则,AND表达式将为false
。这样,当第一个约束失败时,不需要执行第二个约束。