Evitar verificações redundantes de rótulos de nó usando nomes de relacionamento granulares - Amazon Neptune

Evitar verificações redundantes de rótulos de nó usando nomes de relacionamento granulares

Ao otimizar o desempenho, usar rótulos de relacionamento exclusivos dos padrões do nó permite a remoção da filtragem de rótulos nos nós. Considere um modelo de grafo em que o relacionamento likes é usado somente para definir um relacionamento entre dois nós person. Poderíamos escrever a seguinte consulta para encontrar esse padrão:

MATCH (n:person)-[:likes]->(m:person) RETURN n, m

A verificação do rótulo person em n e m é redundante, pois definimos que o relacionamento só apareça quando ambos forem do tipo person. Para otimizar o desempenho, podemos escrever a consulta da seguinte forma:

MATCH (n)-[:likes]->(m) RETURN n, m

Esse padrão também pode ser aplicado quando as propriedades são exclusivas a um rótulo de nó único. Suponha que somente os nós person tenham a propriedade email, portanto, verificar a correspondência do rótulo do nó person é redundante. Escrever a consulta como:

MATCH (n:person) WHERE n.email = 'xxx@gmail.com' RETURN n

É menos eficiente do que escrever a consulta como:

MATCH (n) WHERE n.email = 'xxx@gmail.com' RETURN n

Adote esse padrão somente quando o desempenho for importante e tiver verificações em seu processo de modelagem para garantir que esses rótulos de borda não sejam reutilizados para padrões envolvendo os rótulos de nó. Se você introduzir posteriormente uma propriedade email em outro rótulo de nó, como company, os resultados serão diferentes entre essas duas versões da consulta.