我们想推出一项功能,让用户可以通过 Facebook 好友查看游戏结果。目前,当每个用户首次注册我们的游戏(社交登录)时,我们会存储他们的 Facebook uid。我们的 MySQL 数据库看起来像这样:
用户
- 用户 ID
- facebook_uid
结果
- 用户 ID
- 得分
- 结果日期
调用 Facebook Graph API,我们可以生成一个以逗号分隔的 friend uid 列表。因此,通过 Facebook 好友过滤游戏结果的一种方法是:
- 使用好友列表在 User.facebook_uid 字段上运行 sql IN 子句,然后
- 将 User.user_id 加入 Result.user_id
我们将对此进行测试,但我担心使用 IN 子句对性能的影响( friend 列表可以超过 300 个)。
有人有使用不同方法的经验吗?
愿意接受任何见解。谢谢。
最佳答案
我从不在我的数据库中使用user_id。虽然它很可能是 int(5) - 意味着更快,但拥有两个 id 很容易让人困惑,你可能会遇到这样的问题。
根据我开发 Facebook 应用程序的经验(大约一年半),我在使用 IN 语句时从未遇到过问题,查询总是很快。只要您有良好的数据库架构和良好的 PHP 代码,就应该没问题。毕竟这只是一个排行榜或类似的东西。
您还可以通过 AJAX 调用加载该信息,这样用户就不会因为长时间的 SQL 查询而遇到延迟。
另一种选择是将每个用户的这些 friend 存储在您每次更新的查找表中,但可能有点不准确,我认为为此目的需要花费太多精力。
关于php - Facebook 好友过滤数据库记录的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133052/