MySQL 分页越查越慢?Limit Offset 优化方案汇总
MySQL 分页越查越慢Limit Offset 优化方案汇总分页是开发中最常见的需求之一但大多数人在一开始都写过这样的代码SELECT * FROM orders ORDER BY id LIMIT 100000, 20;这条 SQL 在小数据量时没问题一旦偏移量变大性能就会急剧下降。原因很简单MySQL 需要跳过前面 100000 行才能读取后面的 20 行——这 100000 行全部被扫描并丢弃了。下面汇总 5 种经过验证的优化方案从简单到复杂覆盖不同场景。方案一子查询延迟关联最常用原理​ 先用覆盖索引快速定位起始 ID再关联回原表获取完整数据避免回表扫描大量无用行。-- 原始写法慢 SELECT * FROM orders ORDER BY id LIMIT 100000, 20; -- 优化后快 SELECT o.* FROM orders o INNER JOIN ( SELECT id FROM orders ORDER BY id LIMIT 100000, 20 ) AS tmp ON o.id tmp.id;适用场景​ 任何基于自增主键排序的分页偏移量较大时效果显著。性能提升​ 偏移 10 万行时通常能快10~50 倍。方案二游标分页推荐用于无限滚动原理​ 记住上一页最后一条记录的 ID下一页直接用WHERE id last_id代替LIMIT OFFSET。-- 第一页 SELECT * FROM orders ORDER BY id LIMIT 20; -- 第二页传入上一页最后一个 id 1000 SELECT * FROM orders WHERE id 1000 ORDER BY id LIMIT 20; -- 第三页传入上一页最后一个 id 1020 SELECT * FROM orders WHERE id 1020 ORDER BY id LIMIT 20;优点无论翻多少页速度恒定不需要计算偏移量缺点只能实现“下一页”不能跳转到任意页码依赖连续递增的主键如果有删除操作会有空洞但不影响功能适用场景​ 移动端列表、Feed 流、评论加载等“无限滚动”场景。方案三利用 BETWEEN 或 跳过偏移适合已知主键范围原理​ 如果知道当前页的起始主键值直接用范围查询代替 LIMIT OFFSET。-- 假设每页 20 条第 5001 页的起始 id 是 100000 SELECT * FROM orders WHERE id 100000 AND id 100020 ORDER BY id;优点​ 极快只需扫描目标范围内的数据。缺点需要前端传回起始 ID或后端计算好主键不能有跳跃太大的空洞否则页数不准适用场景​ 后台管理系统的固定页码列表配合缓存记录每页起始 ID。方案四禁用 COUNT(*)改为估算总数原理​ 很多分页组件需要显示总页数而COUNT(*)在大表上非常慢。如果业务允许近似值可以用SHOW TABLE STATUS或EXPLAIN估算。-- 精确但慢全表扫描 SELECT COUNT(*) FROM orders WHERE status 1; -- 估算行数毫秒级 SHOW TABLE STATUS LIKE orders; -- 或者 EXPLAIN SELECT * FROM orders WHERE status 1;注意​SHOW TABLE STATUS返回的是采样估算值误差可能在 30% 以内。EXPLAIN的rows字段也是估算值。适用场景​ 搜索列表、资讯列表等不需要精确总数的页面。方案五分区表 并行查询终极方案原理​ 将大表按时间或主键范围分区查询时只扫描相关分区甚至可以用多线程并行查询。-- 按月份分区 CREATE TABLE orders ( id BIGINT NOT NULL, created_at DATETIME NOT NULL, ... ) PARTITION BY RANGE (TO_DAYS(created_at)) ( PARTITION p202401 VALUES LESS THAN (TO_DAYS(2024-02-01)), PARTITION p202402 VALUES LESS THAN (TO_DAYS(2024-03-01)), PARTITION p202403 VALUES LESS THAN (TO_DAYS(2024-04-01)) ); -- 查询时自动只扫相关分区 SELECT * FROM orders WHERE created_at 2024-02-01 AND created_at 2024-03-01;适用场景​ 超大数据表千万级以上且有时间维度查询需求。方案对比速查表方案实现难度性能提升适用场景局限性子查询延迟关联⭐⭐高任意分页偏移量大时需要合适的索引游标分页⭐极高无限滚动、翻页按钮不能跳页BETWEEN 范围查询⭐极高固定页码、已知ID范围依赖主键连续性禁用 COUNT(*)⭐中等不需要精确总数失去精确分页信息分区表⭐⭐⭐⭐极高超大规模数据维护成本高实际选型建议场景一后台管理系统传统分页使用方案一子查询延迟关联如果数据量特别大百万级以上考虑方案四禁用 COUNT​ 或缓存总数场景二移动端/Web 无限滚动使用方案二游标分页配合last_seen_id参数传给前端场景三实时数据流如日志查询使用方案三BETWEEN 范围查询结合时间戳或自增 ID 做游标场景四超大规模数据千万级以上使用方案五分区表同时配合游标分页或子查询一句话总结别再用 LIMIT OFFSET 翻大页了。用游标代替偏移量用子查询延迟关联代替直接回表用估算代替精确 COUNT这三种技巧能解决 90% 的分页性能问题。

相关新闻

奇偶排序算法:从串行到并行的C++实现与优化

奇偶排序算法:从串行到并行的C++实现与优化

1. 项目概述:奇偶排序,一个被低估的并行排序思想在C/C的算法世界里,排序算法家族可谓星光熠熠,从经典的冒泡、选择、插入,到高效的快速、归并、堆排序,再到特定场景下的计数、桶排序。今天,我想…

2026/7/29 5:55:31 阅读更多 →
ANSYS Fluent多孔介质模型:催化转化器热流耦合仿真全流程解析

ANSYS Fluent多孔介质模型:催化转化器热流耦合仿真全流程解析

1. 从“堵”到“通”:多孔介质模型在工程仿真中的核心价值在流体仿真领域,我们常常会遇到一类特殊的“拦路虎”:那些内部结构极其复杂、无法或无需进行全细节建模的区域。比如,发动机的催化转化器、电子设备的散热风扇、化工反应器…

2026/7/29 5:55:31 阅读更多 →
安卓手机安装Kali Linux:Termux+Proot打造移动安全测试环境

安卓手机安装Kali Linux:Termux+Proot打造移动安全测试环境

1. 项目概述:为什么要在手机上运行Kali?几年前,当我第一次尝试在备用安卓手机上折腾Kali Linux时,身边不少朋友都觉得这想法有点“极客”过头了。一部手机,巴掌大的屏幕,能跑得动那个以强大闻名的渗透测试系…

2026/7/29 5:54:31 阅读更多 →

最新新闻

学生创客团队实战:从校园项目到大型展会互动展示全流程解析

学生创客团队实战:从校园项目到大型展会互动展示全流程解析

1. 项目概述:当“温中科技”遇上“创客嘉年华”“温中科技制作社”,这个名字听起来就带着一股校园社团的青涩与活力。它不是一个商业公司,而是一个由学生自发组织、以兴趣为驱动的科技社团。而“上海创客嘉年华”,则是国内创客圈子…

2026/7/29 6:02:33 阅读更多 →
3D生物打印脑组织:从干细胞到功能性神经网络的核心技术与挑战

3D生物打印脑组织:从干细胞到功能性神经网络的核心技术与挑战

1. 项目概述:从科幻到现实的脑组织工程最近在神经科学和生物医学工程的圈子里,一个话题的热度持续攀升:用3D生物打印技术制造出功能性的、真正的脑组织。这听起来像是科幻电影里的情节,但事实上,全球多个顶尖实验室已经…

2026/7/29 6:02:33 阅读更多 →
3D打印互锁模型:从设计原理到装配实战的完整指南

3D打印互锁模型:从设计原理到装配实战的完整指南

1. 项目概述:从图纸到实物的“埃舍尔之星”如果你对几何美学和动手制作感兴趣,那么“埃舍尔之星”这个名字一定不会陌生。它源自荷兰图形艺术家M.C.埃舍尔那些充满视觉错觉和数学之美的画作,其中无限循环、不可能结构等元素被艺术家们用实体模…

2026/7/29 6:02:33 阅读更多 →
技术传播范式转向:从专业圈层到开放平台的话语权迁移

技术传播范式转向:从专业圈层到开放平台的话语权迁移

上周,一位做企业级产品市场的老朋友突然发来一条消息:“你看黄仁勋在X平台和领英上的推文了吗?互动量差距太大了,我们之前投在领英上的预算是不是该重新评估了?” 这条消息让我愣了一下——确实,平时刷X平台…

2026/7/29 6:02:33 阅读更多 →
今日油价 API 零基础接入:参数详解与请求示例

今日油价 API 零基础接入:参数详解与请求示例

适用场景与接口能力边界 今日油价 API 为开发者提供中国大陆 32 个省份的 92/95/98 号汽油及 0 号柴油基准用量说明,同时基于新浪财经的 WTI 与布伦特实时走势,预测下一次国内成品油调价的方向(上涨/下跌/搁浅)和幅度。此外&…

2026/7/29 6:02:33 阅读更多 →
从焊接入门到创客进阶:电子制作工作坊的技术拆解与学习路径

从焊接入门到创客进阶:电子制作工作坊的技术拆解与学习路径

1. 从“焊接工作坊”到创客入门:一次动手实践的深度拆解看到“Big Cyber焊接工作坊”这个标题,很多朋友可能会觉得这只是一个简单的线下手工活动通知。但如果你仔细琢磨一下附带的那些网络热词——从“LED”、“徽章”、“DFRobot”到“STM32”、“ESP32…

2026/7/29 6:01:33 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻