2010-02-10 49 views
1

我想弄清楚是否可以使用FQL多查詢而不是多個API調用進行操作。FQL多查詢優化

這裏是我的代碼:

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')" 
}; 

目前有太多的結果是在我的「事項標識」查詢牽強,我目前得到的事件的完整列表存儲在「USER_LIST」每個人查詢,我最好只想爲每個人獲取1個事件,然後對這些結果進行排序。我似乎無法做到這一點,使用LIMIT我總共只得到1個結果,但不是每個人。

此外,更重要的是,我只希望'user_name'查詢中的每個事件有一個結果,此時我有時會得到多個參與同一事件的成員,並且這會導致問題,因爲我無法匹配一旦收到結果,用戶就會用相應的事件命名。我也注意到,如果同一用戶要去 'event_id'中包含兩個不同的事件,結果中只有他們名字的一個實例,這也是不可取的。

目前,我有20個API調用,一旦我有'event_id'結果,然後對返回的數據進行排序,這實際上是減慢我的應用程序。

任何人都可以建議我如何能夠實現我想要的,從而優化查詢嗎?

對不起,很長的文章,但這已經越來越我的山雀好幾天!

感謝

回答

0

從我可以在通讀告訴,你想:

  1. 你所有的好友列表,
  2. 最新發生的事件,每個朋友說,他們參加。

這與here提出的問題非常相似,只是他要追蹤每個項目的2個結果,而您只搜索一個。

+0

不幸的是,這並沒有什麼幫助,因爲facebook FQL語言並沒有包含所有這些命令。我以某種方式解決了這個問題,但我不記得那是怎麼回事,那是在二月! – x0b 2010-11-26 10:50:57