MySQL中如何进行SQL调优?

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

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

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

索引层面的优化

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

  • 注意最左匹配原则。

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

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

SQL写法层面的优化

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

架构层面的优化

  • 对于访问频率高但是变化少的数据使用Redis缓存
  • 对单表数据量超过2000万行或物理文件超过2G的大表进行分库分表
  • 搭建主从数据库集群,进行读写分离,让从库分担一些查询的压力
相关推荐
这就是佬们吗8 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
吴声子夜歌8 小时前
MongoDB 4.x——SpringBoot框架整合
数据库·spring boot·mongodb
Database_Cool_8 小时前
阿里云 Tair(企业级内存数据库)vs 腾讯云 Redis 云缓存深度对比:性能/数据结构/成本全维度 Benchmark
数据库·阿里云·缓存
garuda herb8 小时前
生成专题页Blog--建立并返回 MySQL 数据库连接
python·mysql
流星白龙8 小时前
【Redis】1.Redis特性
数据库·redis·缓存
奶糖 肥晨8 小时前
DBeaver 安装与 MySQL 连接配置教程
数据库·mysql
woshihuanglaoshi9 小时前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
万亿少女的梦1689 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
Database_Cool_10 小时前
阿里云 RDS MySQL 降本增效实战:从规格选型到成本优化,月成本降低64%全攻略
mysql·阿里云·云计算
java_logo11 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris