Многозапросная оптимизация FQL

Я пытаюсь понять, можно ли что-то сделать с несколькими запросами FQL, а не с несколькими вызовами API.

Вот мой код:

var queries : Object = {

"user_list":"SELECT uid2 FROM friend WHERE uid1 = "+uid

,"event_id":"SELECT eid, start_time, end_time, location, pic, name FROM event 
WHERE eid IN (SELECT eid FROM event_member 
WHERE uid IN (SELECT uid2 FROM #user_list) 
AND rsvp_status='attending') AND start_time > " + nowSecs + " 
AND start_time < " + (nowSecs + 2500000) + " ORDER BY start_time ASC LIMIT 20"

"user_name":"SELECT name FROM user 
WHERE uid IN (SELECT uid FROM event_member 
WHERE eid IN (SELECT eid FROM #event_id) 
AND uid IN (SELECT uid2 FROM #user_list) AND rsvp_status='attending')"
 };

На данный момент в моем запросе «event_id» извлекается слишком много результатов, в настоящее время я получаю полный список событий для каждого человека, хранящийся в запросе «user_list», который в идеале я хотел бы получить только 1 событие для каждого человека, а затем отсортировать эти результаты. Кажется, я не могу этого сделать, используя LIMIT, я получаю всего 1 результат, но не для каждого человека.

Кроме того, и что более важно, мне нужен только один результат для каждого события в запросе user_name, в настоящий момент я иногда получаю несколько участников, которые посещают одно и то же событие, и это вызывает проблемы, поскольку у меня нет возможности сопоставить имена пользователей. с соответствующим событием после получения результатов. Я также заметил, что если один и тот же пользователь собирается на два разных события, содержащихся в 'event_id', в результате будет только один экземпляр его имени, что также нежелательно.

На данный момент я делаю 20 вызовов API, как только получаю результаты «event_id», а затем сортирую возвращенные данные, что действительно замедляет работу моего приложения.

Может ли кто-нибудь предложить, как я могу добиться того, чего хочу, и, таким образом, оптимизировать запросы, пожалуйста?

Извините за длинный пост, но это уже несколько дней не дает мне покоя!

Спасибо


person x0b    schedule 10.02.2010    source источник


Ответы (1)


Из того, что я могу сказать при чтении, вы хотите получить:

  1. Список всех ваших друзей,
  2. Самое недавнее мероприятие, которое каждый друг сказал, что хотел бы посетить.

Это очень похоже на проблему, представленную здесь, за исключением того, что он ищет 2 результата для каждого элемента, а вы ищете только один.

person David T. Macknet    schedule 08.10.2010
comment
К сожалению, это на самом деле не помогает, так как язык facebook FQL не имеет в своем распоряжении всех этих команд. Я как-то решил это, но не помню как, это было еще в феврале! - person x0b; 26.11.2010