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
相关推荐
哦虎!3 小时前
【JavaEE】网络初识
java
2603_965148113 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
for_ever_love__3 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
我是人✓4 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡4 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室5 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项5 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog5 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
秋饼5 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠5 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记