SQL分页查询最常用方式是LIMIT+OFFSET(MySQL/PostgreSQL)、OFFSET-FETCH(SQL Server 2012+)、ROW_NUMBER()或FETCH(Oracle),深分页应改用主键范围过滤以提升性能。

SQL分页查询最常用、最直接的方式就是用 LIMIT(MySQL/PostgreSQL)或 TOP + OFFSET(SQL Server)等语法实现。核心思路是:跳过前 N 条记录,再取 M 条。下面以主流数据库为例说明实用写法。
这是最直观的写法,适合中小数据量场景:
LIMIT 每页条数 OFFSET 跳过的条数
SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 10;
当页码很大时,用 WHERE + 主键范围过滤比 OFFSET 更高效:
id)且已按该字段排序SELECT * FROM users WHERE id > 10 ORDER BY id LIMIT 10;
id(比如是 9990),再执行:SELECT * FROM users WHERE id > 9990 ORDER BY id LIMIT 10;
标准 ANSI SQL 支持方式,语义清晰:
ORDER BY ... OFFSET N ROWS FETCH NEXT M ROWS ONLY
SELECT * FROM orders ORDER BY order_date DESC OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY;
ORDER BY,否则报错;OFFSET 同样存在深分页性能问题老版本用 ROWNUM(伪列),但需嵌套子查询;新写法推荐窗口函数:
SELECT * FROM (SELECT t.*, ROW_NUMBER() OVER (ORDER BY id) rn FROM users t) WHERE rn BETWEEN 21 AND 30;(第3页,每页10条)WHERE ROWNUM BETWEEN 21 AND 30,必须先给 ROW_NUMBER 再过滤ORDER BY id FETCH FIRST 10 ROWS ONLY OFFSET 20 ROWS
基本上就这些。选哪种方式,主要看数据库类型和数据规模。小项目用 LIMIT OFFSET 足够;高并发或大数据量系统,建议结合主键/时间戳做游标分页,避免 OFFSET 性能陷阱。
以上就是SQL分页查询实现方法_SQL LIMIT分页示例说明的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号