MySQL中如何进行SQL调优?

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

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

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

索引层面的优化

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

  • 注意最左匹配原则。

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

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

SQL写法层面的优化

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

架构层面的优化

  • 对于访问频率高但是变化少的数据使用Redis缓存
  • 对单表数据量超过2000万行或物理文件超过2G的大表进行分库分表
  • 搭建主从数据库集群,进行读写分离,让从库分担一些查询的压力
相关推荐
oradh2 小时前
Oracle TX 锁 Mode 4(Share)问题排查总结
数据库·oracle·tx 锁 mode 4·oracle tx 锁
2601_962065252 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
yi.Ist2 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
阿kun要赚马内2 小时前
MySQL 索引基础
后端·mysql
2601_963282774 小时前
工程项目、政企采购为什么优先选择对讲机批量采购?
数据库
Doraemomo4 小时前
SQLite数据库
数据库·sqlite
2601_962177134 小时前
【MySQL篇】聚合查询,联合查询
android·java·mysql
云贝教育-郑老师4 小时前
MySQL 的“黑匣子“:Performance Schema 把数据库内部变成一张可查的表
数据库·mysql
这个DBA有点耶6 小时前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba