我想從使用Facebook的FQL用戶的新聞提要,以及每個朋友的個人資料信息的前50個(通過朋友的帖子)。我有兩個疑問,這總處理10秒:非常複雜的FQL查詢很慢
SELECT actor_id, message FROM stream
WHERE filter_key IN
(SELECT filter_key FROM stream_filter WHERE uid= me() AND type='newsfeed')
AND actor_id in (SELECT uid2 FROM friend WHERE uid1 = me())
LIMIT 50
該查詢返回的用戶,即使消息是「」(我無法找到一個NOT運算符來篩選出具有行「」爲消息)
第二個查詢:
SELECT pic_big, name,url from profile WHERE id IN
(SELECT actor_id, message FROM stream WHERE filter_key IN
(SELECT filter_key FROM stream_filter WHERE uid= me()
AND type='newsfeed')
AND actor_id in (SELECT uid2 FROM friend WHERE uid1 = me()))
LIMIT 50
我試過其他方式獲得的數據(快),但是,它返回它按隨機順序(Facebook並不能保證數據出來它的方式)。
,我可以把我的網站上一個「加載」動畫,但我不希望因爲我認爲這是可以優化,但我不知道怎麼樣。
在過去,我用的圖形API,但我不得不處理結果自己,這是非常低效的(接管30秒以上)。
甜。謝謝您的幫助! – alexy13 2012-08-13 17:16:37
它似乎工作了幾次,然後在這兩個查詢給出了不匹配的結果(一個查詢可能只有21個結果到45),另一個將是相同的。用戶的帖子不與檔案信息匹配:(。我可以通過ID兩個數組排序,但那就不是通過創建日期訂購它是否有一個簡單的方法來解決這一問題? – alexy13 2012-08-16 03:10:52
是的,最簡單的方法是有兩個嵌套的foreach循環。修改Q2查詢,還可以通過Q1財年第一季度通過Q2返回'id',然後循環。那麼對於每一行,循環,直到你發現在Q1相匹配的'actor_id'的'id'。您可以爲每個用戶提供多個帖子,所以他們可能不會匹配。 – cpilko 2012-08-16 03:18:05