Neo4j Cypher模式:多部分模式上的快速失败

时间:2018-10-03 15:28:33

标签: neo4j cypher

我有一个多部分密码模式,其中第一部分非常快,随后的部分非常慢:

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)部分快速失败?

1 个答案:

答案 0 :(得分:0)

在查询中定义一个模式,然后查询计划者将尝试找到查询的最佳方式起点。

遗憾的是,您尚未展开个人资料上的所有框,所以我看不到查询计划在做什么。

但是,要回答您的问题,您可以使用密码中的WITH来拆分模式。

因此,如果您确定第一个模式可以做一个好的过滤器,则可以执行以下操作:

MATCH (m:EntityX {indexed_property: 1234})-->(a0:EntityY)
WITH m, ao
 MATCH (a0)--(a1:Entity:Y),
       (a1)--(a2:Entity:Y)
 ...

欢呼