Inserción de filtros restrictivos lo antes posible en la consulta
Siempre que sea posible, coloque los filtros al principio de la consulta, ya que esto ayuda a reducir las soluciones intermedias que debe considerar un plan de consulta. De este modo, se necesitará menos memoria y menos recursos de computación para ejecutar la consulta.
El siguiente ejemplo le ayudará a comprender estas repercusiones. Supongamos que escribe una consulta para obtener todas las personas que viven en India. Una versión de la consulta podría ser:
MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WITH country, collect(n.firstName + " " + n.lastName) AS result WHERE country.name = 'India' RETURN result
La versión anterior de la consulta no es la forma más óptima de lograr este caso de uso. El filtro country.name = 'India' aparece más adelante en el patrón de consulta. Primero recopilará todas las personas y su lugar de residencia, las agrupará por país y, a continuación, filtrará solo por el grupo correspondiente a country.name = India. La forma más óptima es consultar solo las personas que viven en India y, a continuación, realizar la agregación de recopilación.
MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WHERE country.name = 'India' RETURN collect(n.firstName + " " + n.lastName) AS result
Por regla general, se debe colocar el filtro lo antes posible después de introducir la variable.