Как я могу запустить своего рода "для" оператора через FQL MuliQuery - PullRequest
0 голосов
/ 17 сентября 2011

По сути,

У меня есть функция, которая просматривает весь список друзей пользователя, а затем забирает последний статусный пост каждого друга.Теперь, для кого-то, у кого есть 1500+ друзей или даже 300+, время для исполнения быстро складывается.Т.е. пробег 100 друзей через ок.65 секунд

Так что я подумал, что это будет лучше работать как пакет через MultiQuery.Вот основная концепция:

$mq = array(
    "query1"=>"SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 5",
    "query2"=>"SELECT actor_id, message, created_time, permalink FROM stream WHERE source_id IN (SELECT uid2 FROM #query1) AND actor_id IN (SELECT uid2 FROM #query1)"
);

Так что это на самом деле прекрасно работает, однако query2 output - это все новостная лента пользователя;Если я установлю его на "LIMIT 1", тогда этот набор будет включать в себя весь query2, который будет ограничен 1 выводом вместо 1 вывода на пользователя.

Любые идеи или рекомендации очень приветствуются.

1 Ответ

0 голосов
/ 17 сентября 2011

Если вам нужен только текущий статус, вы можете просто получить поле «status» пользовательской таблицы. т.е.
ВЫБЕРИТЕ uid, статус ОТ пользователя, ГДЕ УИД uid (ВЫБЕРИТЕ uid2 ОТ ДРУГОГО ГДЕ uid1 = me ())

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

надеюсь, это поможет

...