Ich habe eine naive Frage in Bezug auf die Verwendung von Schlüsselwort DISTINCT
. Also im Grunde habe ich eine Grafik (User- [Likes] -> Item) mit Millionen Knoten. Ich möchte verschiedene Benutzer finden, die einen bestimmten Artikel mögen. Die folgenden zwei Abfragen haben erhebliche Leistungsunterschiede, und ich bin verwirrt. Ich erstelle einen Index von: Item (id) und: User (id).Neo4j Abfrage Leistung mit Schlüsselwort distinct
Abfrage 1:
profile match (a:Item {id:'001'})<-[:LIKES]-(u:User)
return count(distinct u);
Abfrage 2:
profile match (a:Item {id:'001'})<-[:LIKES]-(u:User)
return distinct u;
Die erste Abfrage gibt in Sekunden zur Folge haben, aber die zweite Abfrage hält länger als 5 Minuten laufen und ich verlor Patienten und die Abfrage stoppen . Ich dachte, die zweite Abfrage wäre schneller als die erste Abfrage, da es keine Zählungsaggregationsoperation gibt, daher verstehe ich den Leistungsunterschied nicht.
Gibt die erste Abfrage nicht eine einzelne Zahl zurück, während die zweite Abfrage möglicherweise Tausende (oder * Millionen? *) Knoten zurückgibt? –
Sie sollten die zweite Abfrage von einem Treiber ausführen oder am Ende LIMIT 100 hinzufügen. –