在 Cypher 中对 MATCH 子句使用约束的差异

Difference in use of constrains to a MATCH-clause in Cypher

这两个查询有什么区别吗:

MATCH (p:Person {name:'Alice'})
RETURN p

MATCH (p:Person)
WHERE p.name = 'Alice'
RETURN p

我知道结果是一样的,

但是查询的执行方式有什么不同吗?

这两个查询没有区别,执行计划是一样的。

第一个只是第二个版本的语法糖。

干杯

这个问题已经有了一个公认的答案,但是对于其他类似"Is query X and query Y the same?"的问题,可以看看他们的执行计划来比较。

要在不使用 运行 查询的情况下查看执行计划,请在查询前添加 EXPLAIN 并添加 运行,您将直观地了解哪些运算符以及哪些运算符顺序,将用于计算结果。这样做的缺点是行数的估计可能会关闭,因此您可以通过在查询前添加 PROFILE 来获得更具体的结果,这实际上是 运行 查询。然后通过比较运算符,以及每个运算的结果,可以得出查询X和查询Y是否相同。

在你的两个查询中,执行计划看起来像