MySQL中如何进行SQL调优?

SQL调优的核心思路是减少磁盘I/O避免无效计算

主要就是先通过MySQL的慢查询日志定位慢SQL,再利用EXPLAIN分析执行计划,最后再进行针对性优化。

优化的手段主要有这几大类,分别是索引层面的优化SQL写法层面的优化 以及架构层面的优化

索引层面的优化

  • 合理设计联合索引,利用覆盖索引来避免回表。

  • 注意最左匹配原则。

  • 避免在索引列上做函数运算、隐式类型转换。

  • 及时删除荣誉索引和重复索引。

SQL写法层面的优化

  • 为了减少网络传输和内存占用,只对必要字段进行查询,不使用select *
  • 为了避免全表扫描,避免%LIKE这种前缀模糊查询
  • 连表查询时检查关联字段的字符集和排序规则是否一致,不一致会导致索引失效

架构层面的优化

  • 对于访问频率高但是变化少的数据使用Redis缓存
  • 对单表数据量超过2000万行或物理文件超过2G的大表进行分库分表
  • 搭建主从数据库集群,进行读写分离,让从库分担一些查询的压力
相关推荐
不剪发的Tony老师3 分钟前
Noir:一款键盘驱动的现代化数据库管理工具
数据库·sql
.柒宇.1 小时前
MySQL双主同步
linux·数据库·mysql·docker
Trouvaille ~1 小时前
【MySQL篇】数据类型:存储数据的基础
android·数据库·mysql·adb·字符集·数据类型·基础入门
一 乐1 小时前
酒店预订|基于springboot + vue酒店预订系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·酒店预订系统
光泽雨2 小时前
UNION 和 UNION ALL 作用
数据库·sql
heimeiyingwang3 小时前
【架构实战】SQL调优实战:从执行计划到索引优化
数据库·sql·架构
恼书:-(空寄3 小时前
分库分表风险应对手册(生产实战版)
数据库·分库分表
XDHCOM3 小时前
ORA-06521: PL/SQL映射函数错误,权威解析Oracle报错故障修复与远程处理方案
数据库·sql·oracle
仲芒3 小时前
[24年单独笔记] MySQL 常用的 DDL 命令
笔记·mysql·oracle
数厘3 小时前
2.11 约束的使用(主键、外键、非空、唯一、默认值约束)
sql·mysql·数据分析