为什么这个neo4j查询没有完成?

问题描述 投票:0回答:1

以下未完

MATCH path = (start:A)-[*]->(end:A)
WHERE start.fen = 'abc'
WITH distinct path as distinct_path
WHERE length(distinct_path) > 3
return distinct_path
LIMIT 10

但是当删除 WHERE 子句时,它会返回

MATCH path = (start:A)-[*]->(end:A)
WHERE start.fen = 'abc'
WITH distinct path as distinct_path
return distinct_path
LIMIT 10

WHERE 子句导致其未完成怎么办?

neo4j cypher
1个回答
0
投票

两个查询都有一个

LIMIT 10
,但第二个查询不受任何
WHERE
子句限定,因此它可以简单地返回它找到的前 10 个。

它只找到 10 并停止。

第一个查询带有附加的

WHERE
,意味着返回的 10 must 的路径长度 > 3,这意味着它必须遍历所有较短的路径并丢弃它们,并跟踪它尝试过的路径。您只是在寻找更长的路径。所以这只是更多的计算工作。也许更多的计算工作超出了我们等待的耐心。

© www.soinside.com 2019 - 2024. All rights reserved.