【发布时间】:2017-05-18 03:07:25
【问题描述】:
我用 Django 标签发布这个问题,因为我在这个环境中工作,但它实际上更像是一个通用问题:我想在 Twitter 上显示我的时间线之类的东西,即帖子列表在我关注的所有人中按时间顺序排列。
我的典型数据库结构如下所示:
Table Name: Users
Columns:
UserID PK
EmailAddress
Password
TableName: Friends
Columns:
UserID PK FK
FriendID PK FK
TableName: Posts
Columns:
UserID PK FK
Content
如果我想检索给定用户的所有朋友的所有帖子,它看起来像这样(这不应该是有效的 SQL!):
SELECT * FROM Posts WHERE UserID IN (LIST OF "Given user friends' IDs")
这行得通 - 没问题!但是,这确实无法扩展!假设我们有一个繁忙的网站,给定的用户有 2,000 个朋友,并且数据库中有大约 1000 万个帖子。在这种情况下,数据库查询将非常低效且缓慢。
可以使用 PostgreSQL 或 MySQL 之类的关系数据库来解决这个问题吗?如果没有,例如如何推特做到了吗?
【问题讨论】:
标签: sql django database postgresql