SQL 调优需要掌握的知识

SQL 调优本质上就一句话:

减少 MySQL 扫描的数据量,减少排序、临时表和回表,让数据库用尽可能低的成本拿到结果。

更具体地说:

c 复制代码
全表扫描慢,是因为读的数据太多
索引快,是因为 B+ 树可以快速定位范围
复合索引快,是因为它可以同时服务过滤和排序
覆盖索引快,是因为减少了回表
深分页慢,是因为扫描并丢弃了大量数据
函数、前置模糊匹配慢,是因为破坏了索引的有序性

sql执行过程

sql 复制代码
SELECT id, username
FROM t_user
WHERE create_time < '2025-01-01 12:00:00'
  AND status = 1
ORDER BY age ASC;

当进行sql扫描的时候,SQL会收集需要的字段,并不是把一行数据全都加到暂存区

读取:从 InnoDB 数据页里把记录读出来

暂存:MySQL 为了排序、分组、返回结果临时保存一些字段

复制代码
InnoDB:把一行记录读出来给 MySQL
MySQL:判断 WHERE
MySQL:只把后面要排序/返回的字段放进临时结构

需要的字段

sql 复制代码
status
age
create_time
id
username
相关推荐
herinspace6 分钟前
管家婆实用贴-SQL 2008如何修改成混合模式
服务器·数据库·sql·管家婆软件·财务软件·合肥管家婆软件
打螺丝的小李22 分钟前
制造企业质量管理系统的三类产品形态:分别解决什么问题
数据库·制造
xixingzhe240 分钟前
MySQL 锁表故障排查与处理
数据库·mysql
真上帝的左手1 小时前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
为思念酝酿的痛1 小时前
MySQL表的连接
数据库·mysql
数字新视界1 小时前
机房动环监控系统在提升数据中心能效与安全中的应用探索
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
bksczm2 小时前
MySQL之存储引擎
数据库·mysql
大模型最新论文速读3 小时前
text-to-sql:从学术玩具到生产落地
数据库·sql
ManageEngineITSM3 小时前
工单分类怎么设计?类别、子类别与自动分派的实用方法
大数据·服务器·数据库·人工智能·分类·数据挖掘
ClouGence3 小时前
MongoDB 双向同步如何防止数据循环?(附实操指南)
数据库·mongodb