分页表的分页

时间:2019-07-17 10:26:21

标签: mysql pagination paging

我试图进行有效的分页。我有很多有很多记录的表。最大的记录目前大约有40000条记录,并且将来还会增加。这些表具有以下结构(例如):

order | type | item | price | quantity | packingunit | totalquantity

这些表可以按所有显示的列进行排序,当然它们都有一个ID,该ID也是主键和自动递增的。

问题在于,随着数据量的增加,查询的速度将越来越慢。当前查询看起来像(例如):

... LIMIT 10000, 25

我想摆脱偏移量,找到一种更快的方法来获取每一页的结果。

我读了几个博客,也在这里关于这个问题的stackoverflow上。有一些方法可以通过

进行有效的分页
... WHERE id > 10000 LIMIT 25

但这仅在按ID对表进行排序时有效。正如我提到的,我的表可以按每一列排序。我考虑过要在缓存中读取ID(排序后)并始终查询要在被调用页面上显示的25个ID,但这似乎也不是一种非常有效的方法。

有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:0)

我怀疑任何有头脑的人都会浏览400页。最多将停止在40。

因此,我认为只有这样的深度分页用户才是搜索引擎。因此,我建议使用两个分页系统。 默认情况下,它按ID排序,并允许使用WHERE id > xxx技巧翻阅所有页面直到最后。

但是,只要将其他任何字段用于排序,分页就会在某个合理的页码处停止,并显示“找到太多结果,请优化搜索”。