当前位置: 首页 > news >正文

分页查询的优化

1.创建索引

首先需要在查询字段和排序字段上创建合适的索引,否则数据库引擎就会扫描整张表,降级为filesort

2.分页优化:记住上次位置

比如:

SELECT * FROM orders ORDER BY created_at DESC LIMIT 10000, 10;

实际上MySQL得先扫描前10000条记录,然后丢掉,再返回后面10条。这就像你在书店找第10001本书,得先把前面的全数一遍。

方案:记住上次位置

SELECT * FROM orders WHERE id > last_id ORDER BY id ASC LIMIT 10;

这样,MySQL可以直接从last_id开始找,不用再从头扫描,性能杠杠的。

如何获取每次开始查找的位置呢?

答案是:从上一次结果中获取最大的那条记录(也就是最后一条记录)

注意:这种方案的适用前提是 -> 查询条件一定要是有序的

3.文件排序优化

当ORDER BY不能直接使用索引进行排序时,MySQL会使用排序算法。会先把需要排序的文件加载到缓存中,因此适当增加sort_buffer_size缓存大小能优化排序性能。


http://www.mrgr.cn/news/37571.html

相关文章:

  • Linux云计算 |【第四阶段】RDBMS1-DAY2
  • P3376 【模板】网络最大流(EK算法)
  • 实战生成式(Generative)AI
  • 基于Python大数据可视化的短视频推荐系统
  • C语言理解 —— printf 格式化输出
  • SecureCRT的使用(Linux)
  • ASP.NET Core 打包net8.0框架在Linux CentOS7上部署问题
  • Nginx源码包------YUM安装
  • RabbitMQ 界面管理说明
  • 高校教师成果管理小程序的设计与实现springboot(lw+演示+源码+运行)
  • TypeScript 设计模式之【观察者模式】
  • 传奇外网架设全套图文教程-Hero引擎
  • 【mysql】理解一条sql的执行流程
  • 一站式自闭症全托服务,让孩子全面发展
  • unsqueeze函数、isinstance函数、_VF模块、squeeze函数
  • cdebug实战:容器调试的瑞士军刀
  • Maven项目常见各类 QA
  • Thingsboard规则链:Related Device Attributes节点详解
  • js设计模式(26)
  • vue单点登录异步执行请求https://xxx.com获取并处理数据