分页查询sql语句怎么写?mysql分页查询优化技巧

分页查询是数据库开发中非常常见的操作,不同的数据库系统(如 MySQL、PostgreSQL、Oracle、SQL Server 等)有不同的分页语法,以下是几种主流数据库的分页查询 SQL 语句示例:


MySQL / MariaDB

使用 LIMIT 和 OFFSET 关键字。

MySQL延时关联使分页查询速度提升N倍
加载中
MySQL延时关联使分页查询速度提升N倍
SELECT  FROM table_name
ORDER BY id ASC
LIMIT page_size OFFSET start_index;

示例: 每页 10 条数据,第 2 页(即从第 11 条开始取 10 条):

SELECT  FROM users
ORDER BY id ASC
LIMIT 10 OFFSET 10;

💡 注意:OFFSET 是从 0 开始计数的,第 1 页 OFFSET=0,第 2 页 OFFSET=10,第 n 页 OFFSET=(n-1)page_size。


PostgreSQL

同样使用

分页查询sql语句怎么写?mysql分页查询优化技巧

LIMIT 和 OFFSET,语法与 MySQL 类似。

SELECT  FROM table_name
ORDER BY id ASC
LIMIT page_size OFFSET start_index;

示例:

SELECT  FROM users
ORDER BY id ASC
LIMIT 10 OFFSET 10;

Oracle

Oracle 12c 之前使用 ROWNUM,12c 及以上推荐使用 OFFSET ... FETCH NEXT。

✅ Oracle 12c+ 推荐写法:

SELECT  FROM table_name
ORDER BY id ASC
OFFSET start_index ROWS
FETCH NEXT page_size ROWS ONLY;

示例:

SELECT  FROM users
ORDER BY id ASC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

⚠️ Oracle 11g 及以下(使用 ROWNUM):

分页查询sql语句怎么写?mysql分页查询优化技巧

SELECT FROM ( SELECT a., ROWNUM rn FROM ( SELECT FROM users ORDER BY id ASC ) a WHERE ROWNUM <= 20 ) WHERE rn > 10;

SQL Server

使用 OFFSET ... FETCH NEXT(SQL Server 2012+)或 TOP + NOT IN/ROW_NUMBER()(旧版本)。

✅ SQL Server 2012+ 推荐写法:

SELECT  FROM table_name
ORDER BY id ASC
OFFSET start_index ROWS
FETCH NEXT page_size ROWS ONLY;

示例:

SELECT  FROM users
ORDER BY id ASC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

⚠️ SQL Server 2008 及以下(使用 ROW_NUMBER()):

SELECT  FROM (
    SELECT , ROW_NUMBER() OVER (ORDER BY id ASC) AS row_num
    FROM users
) AS numbered
WHERE row_num BETWEEN 11 AND 20;

分页查询sql语句怎么写?mysql分页查询优化技巧


SQLite

与 MySQL 类似,使用 LIMIT 和 OFFSET。

SELECT  FROM table_name
ORDER BY id ASC
LIMIT page_size OFFSET start_index;

📌 通用建议

  1. 始终使用 ORDER BY:分页时必须指定排序字段,否则结果可能不稳定。
  2. 避免深层分页:当 OFFSET 很大时(如第 10000 页),查询性能会显著下降,可考虑使用“游标分页”(基于上一页最后一条记录的 ID):
    SELECT  FROM users
    WHERE id > last_seen_id
    ORDER BY id ASC
    LIMIT 10;
  3. 索引优化:确保排序字段和过滤条件有合适的索引,以提升分页查询性能。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/%e5%88%86%e9%a1%b5%e6%9f%a5%e8%af%a2sql%e8%af%ad%e5%8f%a5%e6%80%8e%e4%b9%88%e5%86%99%ef%bc%9fmysql%e5%88%86%e9%a1%b5%e6%9f%a5%e8%af%a2%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7/

赞 (0)
GEO优化有没有副作用2026?GEO优化对SEO排名有影响吗
上一篇 2026年7月10日 18:48
Python dedupe去重怎么实现?python数据清洗去重方法
下一篇 2026年7月10日 18:51

相关推荐

  • imageview代码示例怎么用?,有哪些注意事项?

    ImageView是Android开发中最基础的图片显示控件,核心用法就是通过setImageResource()或setImageBitmap()把图片资源塞进去,配合ScaleType控制缩放模式,但真正写好它需要处理内存复用、加载策略和裁剪细节,很多初级开发者在ListView或RecyclerView里……

    2026年8月8日
    400
  • 为什么AI被称为大模型?大模型具体是指什么

    AI被称为“大模型”,核心原因在于其参数量达到千亿甚至万亿级别,且基于深度学习算法,具备处理海量数据并模拟人类认知的能力,这个称呼听起来有些技术化,但如果我们把它拆解开来,其实非常直观,你可以把AI想象成一个正在读书的学生,而“大”指的是他读过的书多,“模型”指的是他读书的方法论,为什么叫“大”?这里的“大……

    2026年6月14日
    4200
  • AI绘画大模型有哪些?主流AI绘画工具对比

    AI绘画大模型是通过深度学习技术,将文本描述或参考图像转化为高质量视觉作品的生成式人工智能工具,其核心优势在于极大地降低了专业设计门槛并显著提升了内容创作效率,过去,创作一张符合商业标准的插画需要设计师耗费数天时间,而现在,借助于先进的算法,这一过程被压缩到了几分钟甚至几秒钟,这种技术变革不仅改变了内容生产的流……

    2026年6月14日
    6900
  • 在数据库系统中如何赋予数据库角色,有哪些步骤?

    赋予数据库角色是权限管理的核心操作,通过将角色授予用户,你可以快速实现精细化权限控制,显著降低安全风险, 无论是团队协作还是业务隔离,合理分配角色都比直接授权更高效、更易维护,数据库角色授予的核心概念与操作数据库角色与权限对比:选择角色还是直接授权很多新手在管理权限时,会纠结是直接给用户一个个权限,还是先创建角……

    2026年7月27日
    700
  • 阿里ai大模型国产哪家强?国产大模型排名及对比

    阿里通义千问大模型作为国产AI的领军者,凭借强大的多模态理解能力和开源生态优势,已成为企业数字化转型和开发者构建智能应用的首选底座,在人工智能飞速发展的当下,选择一款靠谱的国产大模型不再仅仅是技术选型,更是关乎数据安全和业务连续性的战略决策,阿里通义千问(Qwen)系列模型之所以能在众多竞争者中脱颖而出,并非依……

    2026年6月14日
    3300
  • 服务器客户端网速慢怎么办?如何提升网络传输效率

    服务器与客户端网速并非简单的单向传输,而是受网络延迟、带宽瓶颈及协议握手共同影响的动态博弈过程,提升体验的核心在于优化中间链路而非单纯增加带宽,很多时候,用户觉得网页加载慢或游戏卡顿,第一反应是责怪服务器太烂或者自家宽带不够快,这就像两个人打电话,声音大小(带宽)固然重要,但信号传输的快慢(延迟)和线路是否通畅……

    2026年7月3日
    1100
  • iteritems_在Python中是什么?,怎么用

    iteritems_是Python 2中字典的迭代方法,在Python 3中已被移除,但通过理解其背景和替代方案,你可以轻松完成代码迁移,在Python 2时代,iteritems_因为返回迭代器,成为处理大字典时节省内存的首选,但Python 3的items()直接返回视图,既保留了迭代器特性,又增加了集合操……

    2026年8月20日
    500
  • 服务器如何识别客户端身份?服务器识别客户端IP地址的方法

    服务器通过TCP三次握手建立连接,利用IP地址定位网络位置,并通过TLS/SSL证书验证身份,最终在应用层解析HTTP请求头中的Cookie、Token或Session ID来精准识别具体客户端,当你在浏览器输入网址并按下回车,背后的网络世界瞬间开启了一场精密的“认亲”流程,这并非简单的点对点连线,而是一套层层……

    2026年7月7日
    17900
  • AI大模型怎么调用?2026最新API接入教程

    调用AI大模型的核心在于通过API接口将Prompt精准转化为Token流,并配合合理的上下文管理与并发控制,以实现低成本、高稳定性的业务集成,在2026年的技术语境下,AI大模型的调用早已不再是简单的“提问-回答”游戏,而是企业级应用的基础设施,许多开发者在初期往往陷入“直接硬调”的误区,导致响应延迟高、成本……

    2026年6月13日
    8610
  • 服务器连接客户端Qt失败怎么办?Qt网络编程教程

    服务器与客户端基于Qt框架连接的核心在于利用TCP/IP协议建立稳定通道,并通过信号与槽机制实现高效的数据交互,关键在于处理好网络异步性与界面线程安全的平衡,在2026年的物联网与分布式系统开发语境下,Qt依然是跨平台应用开发的基石,许多开发者在面对“qt服务器客户端通信延迟”这一痛点时,往往忽略了底层协议选型……

    2026年7月7日
    21600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注