无订单列值时分页?

问题描述 投票:0回答:1

我有一个表如下(在MySQL 5中创建):

文章

Id | View-Count | Title

假设Id是自增的,View-Count是一个long表示浏览次数

如果我选择按 Id 排序的所有文章,那么很容易进行如下分页:

Select * from Article Where id < lastViewedArticleId Order By Id DESC Limit pageSize

但是,如果我按观看次数排序,我就不能像上面的查询那样做,因为肯定有一些文章具有相同的观看次数,那么我会错过其中一些。目前,我必须这样做:(如果有数百万条记录,这是一个糟糕的解决方案)

Select * from Article Order By View-Count DESC Limit start, pageSize

有人有针对这种情况的解决方案吗?

mysql pagination
1个回答
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 作业。这样你就不会错过任何一个节拍。

© www.soinside.com 2019 - 2024. All rights reserved.