【发布时间】:2012-07-22 16:35:19
【问题描述】:
假设我有一个巨大的网站和一个包含几列(例如“ID”、“AuthorID”、“消息”、“时间”)的巨大表(包含数百万个条目表)以包含类似 twitter 的消息.
我想执行以下简单查询:
SELECT * FROM HugeTable ORDER BY Time DESC LIMIT 1,10;
这个查询应该被执行很多次(每秒十次)。如何确保此查询非常快?
我认为 memcached 可能是一个解决方案,但新帖子添加速度非常快,使用 memcached 我会向用户提供“旧”消息。
假设我只有一台mysql服务器,它可以处理所有的流量。
我的问题是服务器应该取整个表,对其进行排序(这里是巨大的瓶颈),然后只取前 10 个。那么,我能做的最好的优化是什么?分区可能吗?此外,在表格内部,较新的帖子放在底部,因此可以安全地假设新帖子的“ID”和“时间”>= 比以前的帖子。
提前致谢。
P.S:我不是 MySql 的专家(尽管我知道基础),我对 NoSql 方法一无所知。如果您认为 NoSql 足以满足我的任务,那么我愿意学习使用新的东西:)
【问题讨论】:
标签: sql nosql scalability