Java学习 - MySQL常用性能优化 + Explain查看执行计划

常用性能优化方式

  • 服务器硬件优化:加机器,加内存
  • MySQL服务器优化:更改参数,增加缓冲等等
  • SQL本身优化:减少子查询,减少连接查询的使用
  • 反范式设计优化:为了减少连接查询使用,可以允许适量数据冗余,使用空间换时间
  • 物理设计优化:
    • 选择更好的数据类型:数值 > 时间日期 > 字符类型;同级别数据类型,优先选择占用空间少的数据类型
    • 选择合适的存储引擎:MyiSAM和Memory的性能都比InnoDB要好
  • 添加索引优化

SQL执行加载顺序

  • 人写
mysql 复制代码
SELECT
FROM
JOIN ON
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
  • 机读
mysql 复制代码
FROM
JOIN ON
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT

Explain查看执行计划

Explain是什么
  • Explain是MySQL自带的查看SQL执行计划工具,能够知道MySQL是怎样处理SQL语句的
Explain使用
  • 语法

    mysql 复制代码
    explain SQL语句
  • 例子

    mysql 复制代码
    explain SELECT * FROM user;
Explain结果分析
字段 说明
id id相同为一组,从上往下执行;id越大组的优先级越高
select_type 查询的类型; SIMPLE:简单查询, PRIMARY:子查询中最外层查询, SUBQUERY:子查询中内层查询, DERIVED:产生的临时表, UNION:联合查询, UNION RESULT:联合查询的结果集
table 数据来源的表
type 访问类型; 性能为:system > const > eq_ref > ref > range(至少) > index > ALL
possible_keys SQL执行过程中可能使用到的索引
key SQL执行过程中实际使用到的索引
key_len SQL执行过程中实际使用到的索引占用的字节数 它是计算出来的,并非实际使用长度
ref 显示索引中哪一列被使用了
rows SQL执行过程中实际读取的行数
Extra 包含十分重要,但不方便在表格中显示的内容 Using filesort Using temporary Using index Using where Using join buffer impossible where select tables optimized away distinct
相关推荐
vx-程序开发1 分钟前
【计算机毕设】基于Spring Boot的古城景区管理系统88564
java·数据库·spring boot·后端·spring·elasticsearch·课程设计
鹿角片ljp2 分钟前
LeetCode 31:下一个排列|右找小,右找大,交换,右反转
java·数据结构·算法
边境悍匪12 分钟前
蜗牛学苑 Java 智能体学习 Day40|Vue 工程化与 ElementPlus 思维导图复盘
java·vue.js·学习
霸道流氓气质32 分钟前
通义千问 VL & Audio:图像、视频、语音多模态 Java 集成深度解析
java·开发语言·音视频
lemon_sjdk36 分钟前
WCPoint、WebPageClient和Accessor类源码
java·安全·webkit·javafx
vx-Biye_Design37 分钟前
springboot中国传统节日宣传平台49078-计算机课程设计、毕业设计
java·前端·vue.js·spring boot·后端·课程设计·idea
写后端的胖头鱼42 分钟前
【高频面试题】深分页问题
数据库·mysql·数据库优化·深分页
野生技术架构师1 小时前
从向量检索到混合搜索优化:Spring AI 2.0.1 + pgvector RAG 实战
java·人工智能·spring
IT枫斗者枫哥1 小时前
CompletableFuture 超时了,任务还在跑?用三个实验分清超时与取消
java
chushiyunen1 小时前
mockito笔记
java·开发语言·笔记