Colocar filtros restritivos o mais cedo possível na consulta - Amazon Neptune

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.