2011-05-26 89 views
0

我們想介紹一個功能,讓用戶通過他們的Facebook好友查看遊戲結果。當他們第一次註冊我們的遊戲(社交登錄)時,我們目前存儲每個用戶的Facebook uid。我們的MySQL數據庫看起來是這樣的:Facebook好友過濾數據庫記錄的最佳方式是什麼?

用戶

  • USER_ID
  • facebook_uid

結果

  • USER_ID
  • 得分
  • 結果日期

調用Facebook Graph API,我們可以產生一個逗號分隔列表的朋友uid's。因此,通過Facebook上的朋友來過濾博弈結果的一種方法是:

  1. 運行使用的好友列表中User.facebook_uid領域的SQL IN子句,然後
  2. 聯接User.user_id到Result.user_id

我們將對此進行測試,但我擔心使用IN子句的性能影響(朋友列表可能爲300+)。

有沒有人有使用不同方法的經驗?

會喜歡任何見解。謝謝。

回答

1

我從不在我的數據庫中使用user_id。雖然它最可能是一個int(5) - 意味着速度更快,擁有兩個id只是令人困惑,並且可能遇到這樣的問題。

根據我開發Facebook應用程序的經驗(大約1年半),我從來沒有使用過IN語句的問題,查詢總是很快。只要你有一個好的數據庫架構和良好的PHP代碼,你應該沒問題。這只是一個排行榜,畢竟還是類似的。

您還可以通過AJAX調用加載該信息,以便用戶永遠不會遇到由於長SQL查詢而導致的延遲。

另一種選擇是將每個用戶的朋友存儲在每次更新的查找表中,但可能會稍微不起眼,我認爲這樣做太費了力氣。

+0

很高興聽到IN語句查詢有效地運行。感謝您的建議。我會將結果報告回此主題。 – Bitman 2011-05-27 04:25:19

相關問題