FQL оптимизация нескольких запросов - PullRequest
1 голос
/ 10 февраля 2010

Я пытаюсь разобраться, можно ли что-то сделать с несколькими запросами 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', а затем сортирую возвращаемые данные, что действительно замедляет мое приложение.

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

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

Спасибо

1 Ответ

0 голосов
/ 08 октября 2010

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

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

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

...