Ich muss einen Knoten und alle damit verbundenen Knoten basierend auf einer Beziehung zurückgeben. Ein Beispiel für die Abfrage wäre wie:Der effizienteste Weg, um Ergebnisse von Neo4j zu erhalten
MATCH (n) where id(n)= {neo_id}
OPTIONAL MATCH p=(n)-[:OWNS]->(q)
Wäre es effizienter zu sein, Knoten zu bekommen ‚n‘ auf eigenem und dann die Pfade in einem separaten Anruf erhalten, oder soll ich ein callthat gibt ‚n‘ tun und P'.
Addt. Information: Ich muss dies für mehrere Beziehungen tun, und ich habe festgestellt, dass jedes Mal, wenn ich eine Beziehung hinzufüge, die Kombinatorik zwischen allen Pfaden die Leistung verschlechtert. Beispiel:
MATCH (n) where id(n)= {neo_id}
OPTIONAL MATCH p=(n)-[:OWNS]->(q:Something)
OPTIONAL MATCH o=(n)-[:USES]->(r:SomethingElse)
.
.
.
OPTIONAL MATCH l=(n)-[:LOCATED_IN]->(r:NthSomethingElse)
RETURN n, p, o,..., l
oder
//Call 1
MATCH (n) where id(n)= {neo_id}
RETURN n
//Call 2
MATCH (n) where id(n)= {neo_id}
OPTIONAL MATCH p=(n)-[:OWNS]->(q:Something)
RETURN p
//Call 3
MATCH (n) where id(n)= {neo_id}
OPTIONAL MATCH o=(n)-[:USES]->(r:SomethingElse)
RETURN o
.
.
.
//Call nth
MATCH (n) where id(n)= {neo_id}
OPTIONAL MATCH l=(n)-[:LOCATED_IN]->(r:NthSomethingElse)
RETURN l
Perfekt! Das macht sehr viel Sinn. –