Colocar filtros restritivos o mais cedo possível na consulta
Em todos os cenários, colocar filtros na consulta antecipadamente ajuda a reduzir as soluções intermediárias que um plano de consulta deve considerar. Isso significa que menos memória e menos recursos computacionais são necessários para executar a consulta.
O exemplo a seguir ajuda você a entender esses impactos. Suponha que você escreva uma consulta para retornar todas as pessoas que moram em India. Uma versão da consulta pode ser:
MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WITH country, collect(n.firstName + " " + n.lastName) AS result WHERE country.name = 'India' RETURN result
A versão de consulta acima não é a melhor maneira de alcançar esse caso de uso. O filtro country.name = 'India' aparece posteriormente no padrão de consulta. Primeiro, ele coletará todas as pessoas e onde elas moram, as agrupará por país e, em seguida, filtrará somente o grupo para country.name = India. O ideal é consultar somente as pessoas que moram em India e depois realizar a agregação de coleta.
MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WHERE country.name = 'India' RETURN collect(n.firstName + " " + n.lastName) AS result
Uma regra geral é colocar um filtro o mais rápido possível após a introdução da variável.