分页查询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://test.idctop.com/article/481484.html

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

相关推荐

  • 如何使用IDEA远程调试跳转?,IDEA远程调试怎么配置

    一句话说清IDEA远程调试与跳转IDEA远程调试的本质是借助JVM的JDWP协议,让本地IDE与远程运行的应用建立通信,从而实现断点暂停、变量查看和源码跳转,要想跳转顺畅,必须保证本地代码与远程部署的代码完全一致,且正确配置Agent库和端口,远程调试到底解决什么问题很多开发者在本地写代码跑得挺好,一旦部署到测……

    2026年8月10日
    800
  • ftpclient怎么用?ftpclient连接超时怎么解决

    “FTPClient” 通常指的是用于通过 FTP(File Transfer Protocol,文件传输协议) 或 FTPS/SFTP 协议进行文件上传、下载和管理的服务端或客户端组件,根据你的使用场景不同,它可能指代以下几种情况:Java 中的 Apache Commons Net FTPClient这是……

    2026年7月10日
    10500
  • 服务器端如何向客户端发送数据包?网络通信原理

    服务器端向客户端发送数据包是互联网通信的基石,其核心机制是通过TCP/IP协议栈将数据封装、路由并传输至目标设备,确保信息在复杂网络环境中准确、有序地抵达,当你在浏览器输入网址或点击发送按钮时,背后是一场毫秒级的接力赛,服务器作为信息的“发货方”,需要将你的请求转化为一个个标准的数据包,穿越无数路由器、交换机和……

    2026年7月5日
    15100
  • 如何选择服务器漏洞扫描软件,免费版安全吗

    选择服务器漏洞扫描软件,关键在于匹配业务场景与合规需求,而非盲目追求功能全面,服务器漏洞扫描软件哪个好?从需求出发做选择市面上冠以“服务器漏洞扫描软件”之名的工具不下几十种,但真正适合你的往往只有那两三款,不少团队在选型时陷入一种误区:先看功能列表,再看价格,最后才考虑自己服务器到底跑的是什么业务,行业共识认为……

    2026年7月23日
    1000
  • 服务器向客户端发送信息耗时多久?服务器与客户端通信延迟优化

    服务器向客户端发送信息的时间并非固定值,它受网络延迟、服务器负载、数据传输量及中间节点拥堵程度的综合影响,通常在几毫秒到数秒之间波动,在数字化交互日益频繁的今天,我们常常抱怨网页加载慢、视频卡顿或游戏延迟高,这些体验背后的核心逻辑,其实就是数据从服务器“跑”到客户端的过程,很多人误以为只要宽带够快,速度就无限快……

    2026年7月3日
    610
  • 生成式AI与AI大模型有什么区别?AI大模型和生成式AI的区别

    生成式AI与大模型并非简单的技术叠加,而是通过底层逻辑重构,将大模型作为“大脑”驱动生成式AI在内容、代码及多模态领域实现从“辅助”到“自主创造”的质变,很多人容易把这两个概念混为一谈,觉得它们是一回事,大模型是底座,是那个拥有海量知识和强大推理能力的“超级大脑”;而生成式AI是应用层,是利用这个大脑去写文章……

    2026年6月15日
    3510
  • 防火墙提供漏洞扫描功能吗,防火墙漏洞扫描怎么配置

    防火墙本身通常不直接提供深度的漏洞扫描功能,它主要作为网络边界的访问控制设备,而漏洞扫描需要专门的扫描器或集成在下一代防火墙(NGFW)中的特定模块来完成,许多企业IT管理员在采购安全设备时,常会混淆“访问控制”与“资产脆弱性管理”的界限,防火墙像是一个严格的保安,只检查进出人员的证件(IP、端口、协议),而漏……

    2026年7月11日
    19100
  • 大模型部署WebSocket通信怎么实现?大模型部署WebSocket通信延迟高怎么解决

    大模型部署中采用WebSocket通信,核心优势在于实现服务端向客户端的实时流式推送,彻底解决了HTTP轮询带来的高延迟与资源浪费问题,是构建低延迟AI应用的最佳实践,在传统的Web开发模式中,前端向后端发起请求,后端处理完毕后返回完整结果,这种“请求-响应”模式在处理大语言模型(LLM)生成文本时显得捉襟见肘……

    2026年6月18日
    3700
  • 如何访问虚拟机中的网站,VMware虚拟机如何配置桥接网络?

    要在虚拟机中成功访问网站,核心在于通过虚拟网络适配器(NAT、桥接或仅主机模式)建立正确的网络链路,并确保虚拟机内部的IP、网关及DNS配置与虚拟网络环境完全匹配,虚拟机网络模式区别与访问场景分析在虚拟化环境中,虚拟机与物理网络之间的通信并非直接发生,而是通过一个虚拟交换机(Virtual Switch)进行中……

    2026年7月14日
    1500
  • 大模型BPE分词算法是什么?大模型BPE分词算法原理

    BPE(Byte-Pair Encoding)是一种通过统计字符共现频率,将高频子词合并为特殊标记的分词算法,它有效平衡了词汇表大小与语义完整性,是目前大语言模型处理多语言文本的主流基石,在自然语言处理领域,分词是连接原始文本与模型理解的桥梁,早期的分词方式要么过于粗糙,要么过于繁琐,而BPE算法凭借其对语言结……

    2026年6月22日
    2610

发表回复

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