尽可能避免使用 WITH 子句 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

尽可能避免使用 WITH 子句

openCypher 中的 WITH 子句充当边界,在此之前的所有内容都执行完毕,然后将结果值传递给查询的其余部分。如果需要临时聚合或想要限制结果数量,则需要使用 WITH 子句,但除此之外,应该尽量避免使用 WITH 子句。一般指导是删除这些简单的 WITH 子句(不包括聚合、排序依据或限制),以使查询计划程序能够处理整个查询,从而创建全局最优计划。例如,假设您编写了一个查询来返回居住在 India 的所有人:

MATCH (person)-[:lives_in]->(city) WITH person, city MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result

在上述版本中,WITH 子句将模式 (city)-[:part_of]->(country {name: 'India'})(限制性更强)的位置限制在 (person)-[:lives_in]->(city) 之前。这使得该计划不太理想。对此查询的优化是删除 WITH 子句,让计划程序计算出最佳计划。

MATCH (person)-[:lives_in]->(city) MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result