我有一个多部分密码模式,其中第一部分非常快,随后的部分非常慢:
MATCH (m:EntityX {indexed_property: 1234})-[]->(a0),
(a0:EntityY)-[]-(a1:Entity:Y),
(a1:EntityY)-[]-(a2:Entity:Y),
...
RETURN m
现在,我发现查询速度很慢,因为即使大多数查询在模式的第一部分都会失败(产生0行),但整个模式仍在评估中。那么,如何确保模式在(m:EntityX {indexed_property: 1234})-[]->(a0)
部分快速失败?
答案 0 :(得分:0)
在查询中定义一个模式,然后查询计划者将尝试找到查询的最佳方式起点。
遗憾的是,您尚未展开个人资料上的所有框,所以我看不到查询计划在做什么。
但是,要回答您的问题,您可以使用密码中的WITH
来拆分模式。
因此,如果您确定第一个模式可以做一个好的过滤器,则可以执行以下操作:
MATCH (m:EntityX {indexed_property: 1234})-->(a0:EntityY)
WITH m, ao
MATCH (a0)--(a1:Entity:Y),
(a1)--(a2:Entity:Y)
...
欢呼