2011-05-26 61 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

相关问题