让我们假装我有一个巨大的网站和一个巨大的表(有几百万个条目表),有几列(例如“ID”,“AuthorID”,“消息”,“时间” )包含类似twitter的消息。从庞大的表中获取少量排序的记录
我想执行以下简单查询:
SELECT * FROM HugeTable ORDER BY Time DESC LIMIT 1,10;
该查询应执行了很多次(每秒数十)。我如何确保这个查询速度非常快?
我认为memcached本来可以是一个解决方案,但新帖子的添加速度非常快,而且使用memcached我会向用户提供“旧”消息。
假设我只有一个mysql服务器,它很好,它可以处理所有的流量。
我的问题是,服务器应该把整个表,排序(这里的巨大瓶颈),然后只取前10名。那么,我可以做的最佳优化是什么?分区也许?此外,在表格内部,较新的帖子被放置在底部,所以可以安全地假设新帖子将具有比以前更多的“ID”和“时间”> =。
在此先感谢。 P:我不是MySql的专家(即使我知道基础),但我对NoSql方法毫无头绪。如果您认为NoSql是满足我的任务的方式,那么我可以开始学习使用新的东西:)
当你刚到家,需要加载最新的帖子时,该怎么办?你必须等待有人发帖才能真正看到一些东西...... – 2012-07-24 11:42:57
如果帖子非常快速添加,这应该不成问题,但如果你想先显示10个最新帖子,我会使用podiluska建议的缓存。 – Wim 2012-07-24 11:49:32