深分页性能差因需扫描前N行;优化应改用游标分页,基于单调字段(如created_at)记录上页末值,下页查询WHERE created_at
深分页(比如
LIMIT 1000000, 20)在SQL中性能急剧下降,本质是数据库仍需扫描前100万行才能定位到目标数据。优化核心不是“跳过”,而是“避免全量偏移扫描”。用游标分页替代 OFFSET
适用于按时间、ID等单调字段排序的场景。不依赖行号,而是记录上一页最后一条的排序值,下一页查询直接从该值之后取数据。
- 原写法(慢):
SELECT * FROM orders ORDER BY created_at DESC LIMIT 100000, 20- 优化写法(快):
SELECT * FROM orders WHERE created_at- 关键:确保
created_at有索引;若存在相同值,需加唯一字段(如id)做二级排序和条件补充延迟关联减少回表成本
当分页字段和查询字段来自不同索引时,MySQL可能先用索引查出ID,再回表取完整数据——深分页会让这个过程变得极重。
- 低效写法:
SELECT id, name, status FROM user WHERE status = 1 ORDER BY id LIMIT 100000, 20- 优化写法:
SELECT u.* FROM user u INNER JOIN (SELECT id FROM user WHERE status = 1 ORDER BY id LIMIT 100000, 20) t ON u.id = t.id- 原理:子查询只走索引(覆盖索引),拿到20个ID后,主表再精确回表,大幅降低I/O
物理分页 + 缓存预热
对访问规律强的分页(如热门榜单第1–100页),可提前计算并缓存结果。
MvMmall 网店系统下载免费的开源程序长期以来,为中国的网上交易提供免费开源的网上商店系统一直是我们的初衷和努力奋斗的目标,希望大家一起把MvMmall网上商店系统的免费开源进行到底。2高效的执行效率由资深的开发团队设计,从系统架构,数据库优化,配以通过W3C验证的面页模板,全面提升页面显示速度和提高程序负载能力。3灵活的模板系统MvMmall网店系统程序代码与网页界面分离,灵活的模板方案,完全自定义模板,官方提供免费模
- 后台定时任务生成各页的ID列表(如 Redis 中存
rank:page:5→[1022, 1025, ...])- 用户请求第5页时,直接用这些ID批量查详情:
SELECT * FROM item WHERE id IN (1022,1025,...)- 适合读多写少、分页内容变化不频繁的业务,如商品排行榜、文章热榜
限制最大页码或改用搜索/筛选
技术优化之外,更应审视产品逻辑:用户真的需要翻到第5万页吗?
- 前端限制
OFFSET不超过 10000(即最多查到第500页,每页20条)- 提供搜索框、时间范围、分类筛选,帮用户快速定位,而不是靠盲目翻页
- 对管理后台等特殊场景,可启用“导出全部”代替深度浏览
不复杂但容易忽略:深分页问题往往在数据量突破百万后才暴露,上线前用真实数据量压测分页接口,比事后救火更有效。
0
0
相关文章
SQL数据库LRU改进算法_冷热分离策略
SQL数据库全文索引原理_倒排索引解析
SQL数据库时间精度管理_毫秒与微秒差异
SQL性能优化系统教程_MySQL慢查询分析与索引调优实战
SQL数据库死锁回滚策略_牺牲事务选择
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。
676
2023.10.12
SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
320
2023.10.27
在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。
346
2024.02.23
SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。
1093
2024.03.06
sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。
356
2024.03.06
运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。
674
2024.04.07
sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。
412
2024.04.29
热门下载
相关下载
精品课程




