Preferir direcionar para bordas bidirecionais nas consultas - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Preferir direcionar para bordas bidirecionais nas consultas

Quando o Neptune realiza otimizações de consulta, as bordas bidirecionais dificultam a criação de planos de consulta ideais. Planos abaixo do ideal exigem que o mecanismo faça um trabalho desnecessário e ocasionam degradação do desempenho.

Portanto, use bordas direcionadas em vez de bidirecionais sempre que possível. Por exemplo, use:

MATCH p=(:airport {code: 'ANC'})-[:route]->(d) RETURN p)

em vez de:

MATCH p=(:airport {code: 'ANC'})-[:route]-(d) RETURN p)

Na verdade, a maioria dos modelos de dados não precisa percorrer bordas nas duas direções, portanto, as consultas podem obter melhorias significativas no desempenho ao passar a usar bordas direcionadas.

Se o modelo de dados exigir percurso por bordas bidirecionais, faça do primeiro nó (lado esquerdo) no padrão MATCH o nó com a filtragem mais restritiva.

Veja o exemplo: “Encontre-me em todas as routes para e do aeroporto ANC”. Escreva essa consulta para começar no aeroporto ANC, da seguinte forma:

MATCH p=(src:airport {code: 'ANC'})-[:route]-(d) RETURN p

O mecanismo pode realizar a quantidade mínima de trabalho para atender à consulta, porque o nó mais restrito é colocado como o primeiro nó (lado esquerdo) no padrão. O mecanismo pode então otimizar a consulta.

Essa é de longe a opção preferencial em comparação a filtrar o aeroporto ANC no final do padrão, desta forma:

MATCH p=(d)-[:route]-(src:airport {code: 'ANC'}) RETURN p

Quando o nó mais restrito não é colocado primeiro no padrão, o mecanismo precisa realizar um trabalho adicional porque não pode otimizar a consulta e precisa realizar pesquisas adicionais para chegar aos resultados.