Was ist die schnellste Freundes-Abfrage in ArangoDB (mit Anzahl)

Ich versuche, mit ArangoDB eine Liste von Freunden von Freunden zu erhalten. Nicht nur eine einfache Freundesliste, ich möchte auch wissen, wie viele Freunde der Benutzer und der Freund eines Freundes gemeinsam haben, und das Ergebnis sortieren. Nach mehreren Versuchen, die leistungsstärkste AQL-Abfrage (neu) zu schreiben, ergab sich Folgendes:

LET friends = (
  FOR f IN GRAPH_NEIGHBORS('graph', @user, {"direction": "any", "includeData": true, "edgeExamples": { name: "FRIENDS_WITH"}})
  RETURN f._id
)

LET foafs = (FOR friend IN friends
  FOR foaf in GRAPH_NEIGHBORS('graph', friend, {"direction": "any", "includeData": true, "edgeExamples": { name: "FRIENDS_WITH"}})
    FILTER foaf._id != @user AND foaf._id NOT IN friends
    COLLECT foaf_result = foaf WITH COUNT INTO common_friend_count
    RETURN {
      user: foaf_result,
      common_friend_count: common_friend_count
    }
)
FOR foaf IN foafs
  SORT foaf.common_friend_count DESC
  RETURN foaf

Leider ist die Leistung nicht so gut, wie ich es mir gewünscht hätte. Im Vergleich zu den Neo4j-Versionen derselben Abfrage (und Daten) scheint AQL etwas langsamer zu sein (5-10x).

Was ich gerne wissen würde, ist ... Wie kann ich unsere Abfrage verbessern, um eine bessere Leistung zu erzielen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage