【问题标题】:pagination for sorted table排序表的分页
【发布时间】:2019-07-17 19:31:45
【问题描述】:

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

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

表格可以按所有显示的列排序,当然它们都有一个 ID,它也是主键和自动增量。

问题是,随着数据量的增加,查询会越来越慢。目前查询看起来像(例如):

... LIMIT 10000, 25

我想摆脱 OFFSET 并找到一种更快的方法来获取每个页面的结果。

我阅读了一些关于此问题的博客以及关于 stackoverflow 的文章。有一些方法可以使用

实现高效的分页
... WHERE id > 10000 LIMIT 25

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

有没有人有想法,如何解决这个问题?

【问题讨论】:

    标签: mysql pagination paging


    【解决方案1】:

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

    所以这让我觉得这样一个深度分页的唯一用户是搜索引擎。因此,我建议有两个分页系统。 默认情况下,它按 id 排序,并允许使用WHERE id > xxx 技巧将所有页面翻到最后。

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

    【讨论】:

    • 不,这不是一个选项。但感谢您的意见。我已经有了解决方案的一部分,我也会将其作为答案发布。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多