好的,那么归结为在 mysql 中分页的最佳实践是什么。让我说得更清楚,假设给定时间我有 2000 条记录,并且还有更多记录被插入。我一次显示 25,我知道我必须使用 limit 来对记录进行分页。但是我应该如何处理我的记录总数呢?每次用户点击请求下 25 条记录时,我是否统计记录。请不要直接告诉我答案,而是给我指出正确的方向。谢谢!
最佳答案
最简单的解决方案是在插入新记录时继续正常处理结果集。据推测,您显示的每个页面都将使用如下所示的查询:
SELECT *
FROM yourTable
ORDER BY someCol
LIMIT 25
OFFSET 100
当用户来回翻页时,如果有新数据进入,页面可能会与之前的页面发生变化。从逻辑的角度来看,这还不错。例如,如果您有一个按字母顺序排列的产品列表,并且出现了一个新产品,那么用户会以一种相当不错的方式收到此信息。
至于计数,只要有数据支持添加新页面,您的代码就可以允许移动到下一页。添加新记录可能意味着需要更多页面来覆盖整个表格,但这不应影响您用于确定何时停止允许页面的逻辑。
如果您的表有一个日期或时间戳列表示添加记录的时间,那么您实际上可以将整个结果集限制为时间快照。在这种情况下,您可以阻止新数据进入给定 session 。
关于用于分页的 MySQL 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40987010/