我试图进行有效的分页。我有很多有很多记录的表。最大的记录目前大约有40000条记录,并且将来还会增加。这些表具有以下结构(例如):
order | type | item | price | quantity | packingunit | totalquantity
这些表可以按所有显示的列进行排序,当然它们都有一个ID,该ID也是主键和自动递增的。
问题在于,随着数据量的增加,查询的速度将越来越慢。当前查询看起来像(例如):
... LIMIT 10000, 25
我想摆脱偏移量,找到一种更快的方法来获取每一页的结果。
我读了几个博客,也在这里关于这个问题的stackoverflow上。有一些方法可以通过
进行有效的分页... WHERE id > 10000 LIMIT 25
但这仅在按ID对表进行排序时有效。正如我提到的,我的表可以按每一列排序。我考虑过要在缓存中读取ID(排序后)并始终查询要在被调用页面上显示的25个ID,但这似乎也不是一种非常有效的方法。
有人知道如何解决此问题吗?
答案 0 :(得分:0)
我怀疑任何有头脑的人都会浏览400页。最多将停止在40。
因此,我认为只有这样的深度分页用户才是搜索引擎。因此,我建议使用两个分页系统。
默认情况下,它按ID排序,并允许使用WHERE id > xxx
技巧翻阅所有页面直到最后。
但是,只要将其他任何字段用于排序,分页就会在某个合理的页码处停止,并显示“找到太多结果,请优化搜索”。