You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL表数据量持续增长,如何查询指定范围的行数据?

MySQL 分页获取指定范围行数据的方法

在MySQL中,你可以通过LIMIT子句轻松实现指定范围行数据的查询,下面是具体实现方式和关键注意事项:

基础分页语法

MySQL支持两种LIMIT写法来实现分页:

  1. LIMIT offset, row_count

    • offset:需要跳过的行数(从0开始计数)
    • row_count:需要获取的行数
      示例:
    • 获取1-50行:SELECT * FROM your_table ORDER BY id ASC LIMIT 0, 50;
    • 获取51-100行:SELECT * FROM your_table ORDER BY id ASC LIMIT 50, 50;
  2. LIMIT row_count OFFSET offset(MySQL 8.0+推荐,可读性更强)
    对应示例:

    • 获取1-50行:SELECT * FROM your_table ORDER BY id ASC LIMIT 50 OFFSET 0;
    • 获取51-100行:SELECT * FROM your_table ORDER BY id ASC LIMIT 50 OFFSET 50;

必须重视的排序规则

由于你的表是持续增长的状态,一定要指定稳定的排序规则,比如基于主键(如id)或唯一索引排序。如果不添加ORDER BY,MySQL返回的行顺序是不确定的,会导致分页时出现重复数据或遗漏数据的问题。

大偏移量场景的性能优化

当偏移量很大(比如要取第10001-10050行),使用OFFSET可能会因为扫描大量无关数据导致性能下降。这时可以利用上一页最后一条数据的主键值来优化查询:
假设上一页最后一条数据的id是10000,下一页的查询可以写成:
SELECT * FROM your_table WHERE id > 10000 ORDER BY id ASC LIMIT 50;
这种方式能直接利用主键索引定位数据,性能远优于大OFFSET写法。

内容的提问来源于stack exchange,提问作者Filip Eriksson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:25:25