Evitar usar a cláusula WITH quando possível - Amazon Neptune

Evitar usar a cláusula WITH quando possível

A cláusula WITH no openCypher atua como um limite em que tudo antes dela é executado e os valores resultantes são passados para as partes restantes da consulta. A cláusula WITH é necessária quando você precisa de agregação provisória ou deseja limitar o número de resultados, mas, além desses casos, evite o uso dessa cláusula. A orientação geral é remover essas cláusulas WITH simples (sem agregação, ordem ou limite) para permitir que o planejador de consultas trabalhe em toda a consulta para criar um plano globalmente ideal. Por exemplo, suponha que você escreveu uma consulta para retornar todas as pessoas que moram em India:

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

Na versão acima, a cláusula WITH restringe o posicionamento do padrão (city)-[:part_of]->(country {name: 'India'}) (que é mais restritivo) antes de (person)-[:lives_in]->(city). Isso deixa o plano abaixo do ideal. Uma otimização dessa consulta seria remover a cláusula WITH e permitir que o planejador calculasse o melhor plano.

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