mysql - 排序表的分页
问题描述
我尝试进行有效的分页。我有很多表有很多记录。最大的一个目前有大约 40000 条记录,并且将来会增加。这些表具有这样的结构(例如):
order | type | item | price | quantity | packingunit | totalquantity
这些表可以按所有显示的列排序,当然它们都有一个 ID,它也是主键和自动增量。
问题是,随着数据量的增加,查询会越来越慢。目前查询看起来像(例如):
... LIMIT 10000, 25
我想摆脱 OFFSET 并找到一种更快的方法来获取每个页面的结果。
我阅读了几篇博客以及关于这个问题的 stackoverflow。有一些方法可以实现有效的分页
... WHERE id > 10000 LIMIT 25
但这仅在您按 ID 对表进行排序时才有效。正如我所提到的,我的表格可以按每一列排序。我考虑过读取缓存中的 ID(排序后)并始终查询要在被调用页面上显示的 25 个 ID,但这似乎也是一种不太有效的方法。
有谁知道如何解决这个问题?
解决方案
我怀疑任何头脑正常的人都会浏览 400 页。最多会停在40。
所以这让我觉得这样一个深度分页的唯一用户是搜索引擎。因此,我建议有两个分页系统。WHERE id > xxx
默认情况下,它按 id 排序,并允许使用技巧翻阅所有页面直到最后。
但是,一旦使用任何其他字段进行排序,分页就会停在某个合理的页码处,并说“找到的结果太多,请优化您的搜索”。
推荐阅读
- python - 如何设置最大窗扇移动
- python - 我该如何解决:UnboundLocalError:分配前引用的局部变量“生成”
- c - 为什么我得到垃圾值?
- javascript - 创建后更改 Anchor ID 后,端点不再与 Anchor 一起拖动 - JSPlumb
- javascript - 如何使用 ant-design 将 react-draggable 用于模态?
- python - 如何在 windows 中的 python3 中导入文件/模块?
- html - 为什么我的导航栏是垂直的而不是水平的
- pug - 如何将图标添加到 pug 中的按钮?
- wordpress - 用于 og:image 的 Wordpress 自定义字段
- flutter - 颤振等待尝试捕获