Какой самый быстрый запрос друзей ArangoDB (с учетом)

Я пытаюсь использовать ArangoDB, чтобы получить список друзей. Это не просто список друзей-друзей, я также хочу узнать, сколько друзей имеют друг у друга и друг-друга, и отсортировать результат. После нескольких попыток (пере) написания наиболее эффективного AQL-запроса я получил следующее:

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

К сожалению, производительность не так хороша, как хотелось бы. По сравнению с версиями того же запроса (и данных) для Neo4j, AQL выглядит немного медленнее (5-10x).

Что я хотел бы знать ... Как я могу улучшить наш запрос, чтобы он работал лучше?

Ответы на вопрос(1)

Ваш ответ на вопрос