Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Vermeiden Sie COLLECT (DISTINCT ())
Anmerkung
Ab der Engine-Version 1.4.7.0 ist diese empfohlene Neuschreibung nicht mehr erforderlich.
COLLECT (DISTINCT ()) wird immer dann verwendet, wenn eine Liste mit unterschiedlichen Werten erstellt werden soll. COLLECT ist eine Aggregationsfunktion, und die Gruppierung erfolgt auf der Grundlage zusätzlicher Schlüssel, die in derselben Anweisung projiziert werden. Wenn distinct verwendet wird, wird die Eingabe in mehrere Blöcke aufgeteilt, wobei jeder Block eine Gruppe zur Reduzierung bezeichnet. Die Leistung wird beeinträchtigt, wenn die Anzahl der Gruppen zunimmt. In Neptune ist es viel effizienter, DISTINCT vor der eigentlichen collecting/forming Liste auszuführen. Dadurch kann die Gruppierung direkt mit den Gruppierungsschlüsseln für den gesamten Chunk durchgeführt werden.
Betrachten Sie folgende Abfrage:
MATCH (n:Person)-[:commented_on]->(p:Post) WITH n, collect(distinct(p.post_id)) as post_list RETURN n, post_list
Eine optimalere Art, diese Abfrage zu schreiben, ist:
MATCH (n:Person)-[:commented_on]->(p:Post) WITH DISTINCT n, p.post_id as postId WITH n, collect(postId) as post_list RETURN n, post_list