当前位置:   article > 正文

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

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

常用性能优化方式

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

SQL执行加载顺序

  • 人写
SELECT
FROM
JOIN ON
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 机读
FROM
JOIN ON
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Explain查看执行计划

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

    explain SQL语句
    
    • 1
  • 例子

    explain SELECT * FROM user;
    
    • 1
Explain结果分析
字段说明
idid相同为一组,从上往下执行;id越大组的优先级越高
select_type查询的类型;
SIMPLE:简单查询,
PRIMARY:子查询中最外层查询,
SUBQUERY:子查询中内层查询,
DERIVED:产生的临时表,
UNION:联合查询,
UNION RESULT:联合查询的结果集
table数据来源的表
type访问类型;
性能为:system > const > eq_ref > ref > range(至少) > index > ALL
possible_keysSQL执行过程中可能使用到的索引
keySQL执行过程中实际使用到的索引
key_lenSQL执行过程中实际使用到的索引占用的字节数
它是计算出来的,并非实际使用长度
ref显示索引中哪一列被使用了
rowsSQL执行过程中实际读取的行数
Extra包含十分重要,但不方便在表格中显示的内容
Using filesort
Using temporary
Using index
Using where
Using join buffer
impossible where
select tables optimized away
distinct
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/739567
推荐阅读
相关标签
  

闽ICP备14008679号