View a markdown version of this page

Evita di usare la clausola WITH quando possibile - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Evita di usare la clausola WITH quando possibile

La clausola WITH in OpenCypher funge da limite in cui tutto ciò che precede l'esecuzione, quindi i valori risultanti vengono passati alle parti rimanenti della query. La clausola WITH è necessaria quando si richiede un'aggregazione provvisoria o si desidera limitare il numero di risultati, ma a parte questo è necessario cercare di evitare di utilizzare la clausola WITH. La guida generale consiste nel rimuovere queste semplici clausole WITH (senza aggregazione, order by o limit) per consentire al Query Planner di lavorare sull'intera query per creare un piano ottimale a livello globale. Ad esempio, supponiamo di aver scritto una query per restituire tutte le persone che vivono in: India

MATCH (person)-[:lives_in]->(city) WITH person, city MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result

Nella versione precedente, la clausola WITH limita il posizionamento del pattern (city)-[:part_of]->(country {name: 'India'}) (che è più restrittivo) precedente. (person)-[:lives_in]->(city) Ciò rende il piano non ottimale. Un'ottimizzazione di questa query consisterebbe nel rimuovere la clausola WITH e consentire al pianificatore di calcolare il piano migliore.

MATCH (person)-[:lives_in]->(city) MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result