Neo4j Cypher ORDER BY 在查询中间以及并行运行时的预期行为

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

在 Cypher 查询中,我可以在查询中间插入

ORDER BY
,例如

MATCH (p:Product)
WITH p
ORDER BY p.id DESC 
LIMIT 5
MATCH (p)-[:CREATED_BY]->(u:User)
RETURN p.id, u.name

SLOTTED
PIPELINED
运行时,我将收到正确排序的结果。例如:

p.id | u.name
---------------
5    | someName
4    | someName
3    | someName
2    | someName
1    | someName

使用

PARALLEL
运行时时,即使我在
MATCH
子句之后有额外的
ORDER BY
语句,我是否应该期望得到相同的结果(保持正确的顺序)?

neo4j cypher neo4j-parallel-runtime
1个回答
0
投票

不保证。以下是 Cypher 手册对此的描述:

当 ORDER BY 出现在WITH子句中时,紧随其后的 子句将按指定的顺序接收记录。订单不是 保证在以下条款之后保留,除非也 有一个 ORDER BY 子条款。

时隙式和流水线式可能会保留顺序,即使不能保证,但并行式可能不会。

https://neo4j.com/docs/cypher-manual/current/clauses/order-by/#order-with

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