用于分页的 MySQL 查询性能

标签 mysql

好的,那么归结为在 mysql 中分页的最佳实践是什么。让我说得更清楚,假设给定时间我有 2000 条记录,并且还有更多记录被插入。我一次显示 25,我知道我必须使用 limit 来对记录进行分页。但是我应该如何处理我的记录总数呢?每次用户点击请求下 25 条记录时,我是否统计记录。请不要直接告诉我答案,而是给我指出正确的方向。谢谢!

最佳答案

最简单的解决方案是在插入新记录时继续正常处理结果集。据推测,您显示的每个页面都将使用如下所示的查询:

SELECT *
FROM yourTable
ORDER BY someCol
LIMIT 25
OFFSET 100

当用户来回翻页时,如果有新数据进入,页面可能会与之前的页面发生变化。从逻辑的角度来看,这还不错。例如,如果您有一个按字母顺序排列的产品列表,并且出现了一个新产品,那么用户会以一种相当不错的方式收到此信息。

至于计数,只要有数据支持添加新页面,您的代码就可以允许移动到下一页。添加新记录可能意味着需要更多页面来覆盖整个表格,但这不应影响您用于确定何时停止允许页面的逻辑。

如果您的表有一个日期或时间戳列表示添加记录的时间,那么您实际上可以将整个结果集限制为时间快照。在这种情况下,您可以阻止新数据进入给定 session 。

关于用于分页的 MySQL 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40987010/

相关文章:

java - 我怎样才能让这个用户(普通用户)获得使用该程序的权限

iOS Swift - 离线可用性

php - MySQL/PHP/PDO + 如何为 IN() 子句中的每个(重复)条目获取一行?

java - 提供参数时查询不起作用

mysql - 如何使用 n :m retrieve all "attributes"? 进行 SELECT

mysql - 如何使用内连接更新选择中的字段值?

java - 如何在mysql或任何数据库中保存未知长度的数据

mysql - 如何针对 LIKE '%abc%' 查询优化包含 1.6+ 万条记录的 MySQL 表

javascript - 在 JQuery 和执行函数中使用的 JSON 数组值

mysql - 将 XML 文件中的数据导入 MySQL 数据库