【问题标题】:Relation Database Design for Friends List / Buddy List Speed好友列表/好友列表速度的关系数据库设计
【发布时间】:2011-11-30 00:31:14
【问题描述】:

我正在快速整理一个好友/好友列表,其中用户将拥有好友列表。我将为此使用关系数据库并找到以下帖子:

Buddy List: Relational Database Table Design

所以好友表可能看起来像这样:

buddy_id     username
1            George
2            Henry
3            Jody
4            Cara

用户好友列表的表格如下所示:

user_id      buddy_id
2            4
1            4
1            3

我的问题是,如果一个用户有 20,000 多个好友并希望在一秒钟左右的时间内将整个列表拉到那里,它会有多快。我将在一个非常典型的 MySql 设置上运行它。是否有任何关键的优化或数据库配置来实现这一速度?

【问题讨论】:

  • 您是否考虑加载一些测试数据?
  • 是的,这是选项 #2,但似乎有人可能对类似的布局有一些经验。
  • 加载测试数据应该是选项#1。

标签: mysql relational-database


【解决方案1】:

“拉他们的整个名单”对您意味着什么?

在我的计算机上,我可以在 15 毫秒内从一个大型“伙伴”表(几百万行)中选择 20,000 行,但这不包括网络传输时间(两个方向)、格式和在网页上的显示。 (我认为这就是重点——一个 Web 应用程序。)

您需要一个涵盖 user_id 的索引,但是在 (user_id, buddy_id) 上创建一个主键就可以了。

脚本语言对于生成测试数据很有用。我今天使用的是ruby

【讨论】:

  • 拉列表意味着我可以查询 user_id 1 假设它会返回 Jody、Cara,所以它会进行连接(不仅返回 buddy_id)
猜你喜欢
  • 1970-01-01
  • 2021-10-03
  • 2012-05-24
  • 2012-07-30
  • 2012-04-03
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多