我有一个表如下(在MySQL 5中创建):
文章:Id | View-Count | Title
假设Id为自动增加,View-Count为长度,表示视图数量
如果我选择按ID排序的所有文章,那么很容易进行分页,例如:
Select * from Article Where id < lastViewedArticleId Order By Id DESC Limit pageSize
但是,如果我按View-Count排序我不能像上面的查询那样做,因为肯定会有一些文章具有相同的视图计数,那么我会想念其中一些。目前,我必须这样做:(如果有数百万条记录,这是一个糟糕的解决方案)
Select * from Article Order By View-Count DESC Limit start, pageSize
有没有人为这种情况提供一些解决方案?
答案 0 :(得分:0)
为文章创建序列表并定期更新序列(cron)。然后对该分页进行分页并使用它来分解。
SELECT @sequence := 0;
CREATE TABLE Article_sequence Select @sequence := sequence +1 as sequence, article_id from Article Order By View-Count DESC
然后从那里做你的分页。
Cron每小时都在工作。这样你就不会错过任何一个节拍。