php - Facebook 好友过滤数据库记录的最佳方式是什么?

标签 php mysql sql facebook facebook-graph-api

我们想推出一项功能,让用户可以通过 Facebook 好友查看游戏结果。目前,当每个用户首​​次注册我们的游戏(社交登录)时,我们会存储他们的 Facebook uid。我们的 MySQL 数据库看起来像这样:

用户

  • 用户 ID
  • facebook_uid

结果

  • 用户 ID
  • 得分
  • 结果日期

调用 Facebook Graph API,我们可以生成一个以逗号分隔的 friend uid 列表。因此,通过 Facebook 好友过滤游戏结果的一种方法是:

  1. 使用好友列表在 User.facebook_uid 字段上运行 sql IN 子句,然后
  2. 将 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/

相关文章:

php 类型 def 与绑定(bind)参数不匹配

php - 使用 php MySql 动态创建选择列表,但选择选项不起作用

sql - Oracle 减号和联合运算顺序/优先级

mysql - 日期时间比较?

SQL舍入功能

php - 表单上的 token 方法、双重提交问题

php - 从返回引用的函数返回 null

php - 如何在 Windows 操作系统上安装 gearman php 扩展?

php - 合并三个表之间的数据

mysql - GROUP BY 已与两个子查询分组的另一个表