1. 优化简介

  MySQL性能优化包括:查询优化、数据库结构优化、MySQL服务器优化等。

2. 查询优化

2.1 分析查询语句

  MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句。

  EXPLAIN语句的基本语法:

EXPLAIN [EXTENDED] SELECT select_options

  其中,EXTENDED用于EXPLAIN产生附加信息,select_options是SELECT语句的查询选项,包括FROM WHERE子句等。

mysql> EXPLAIN SELECT * FROM product;
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | product | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    1 |   100.00 | NULL  |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+

  其中,

    id:SELECT识别符,SELECT的查询序列号。

    select_type:SELECT语句的类型。

      取值包括:

      (1)SIMPLE:简单查询,不包括连接查询和子查询

      (2)PRIMARY:主查询,或最外层的查询语句

      (3)UNION:连接查询的第2个或后面的查询语句

      (4)DEPENDENT UNION:连接查询中的第2个或后面的SELECT语句,取决于外面的查询

      (5)UNION RESULT:连接查询的结果

      (6)SUBQUERY:子查询中的第1个SELECT语句

      (7)DEPENDENT SUBQUERY:子查询中的第1个SELECT,取决于外面的查询

      (8)DERIVED:导出表的SELECT(FROM子句的子查询)

    table:查询的表

    type:表的连接类型

      表的连接类型从最佳到最差顺序:

      (1)system:该表是仅有一行的系统表,是const连接类型的一个特例。

      (2)const:数据表最多只有一个匹配行,const表查询速度很快,因为只读取一次。

            const用于使用常量值比较PRIMARY KEY或UNIQUE索引场合。

mysql> EXPLAIN SELECT * FROM product WHERE id = 1;
+----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table   | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra |
+----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | product | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |      100 | NULL  |
+----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+

      (3)eq_ref:用在一个索引的所有部分被连接使用并且索引是UNIQUE或PRIMARY KEY。

            eq_ref可以用于使用"="操作符比较带索引的列。比较值为常量或一个在该表前面所读取的列的表达式。

mysql> EXPLAIN SELECT-> product.*-> FROM-> product-> INNER JOIN category ON product.category_id = category.id;
+----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+
| id | select_type | table     | partitions | type   | possible_keys | key     | key_len | ref                    | rows | filtered | Extra       |
+----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+
|  1 | SIMPLE      | product   | NULL       | ALL    | NULL          | NULL    | NULL    | NULL                   |  118 |      100 | Using where |
|  1 | SIMPLE      | category  | NULL       | eq_ref | PRIMARY       | PRIMARY | 4       | db.product.category_id |    1 |      100 | Using index |
+----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+

转载于:https://www.cnblogs.com/libingql/p/8669150.html

MySQL系列:性能优化相关推荐

  1. DBA很忙—MySQL的性能优化及自动化运维实践

    作者:王辰 来自:高效运维(ID:greatops) DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 D ...

  2. MySQL数据库性能优化之一

    MySQL数据库性能优化需要考虑的几个方面: 1.sql语句及索引优化 2.数据库结构优化 3.系统配置优化 4.硬件优化 转载于:https://blog.51cto.com/davidlinux/ ...

  3. mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...

    解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...

  4. 淘宝内部分享:MySQL MariaDB性能优化

     淘宝内部分享:MySQL & MariaDB性能优化 摘要:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务, ...

  5. MySQL主从复制性能优化

    MySQL主从复制性能优化 MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是 一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到 ...

  6. #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)

    Linux + JVM + Mysql高级性能优化课程 课程名称:      Linux + JVM + Mysql高级性能优化 QQ群:      243242580(小白.菜鸟勿进)跟Java.M ...

  7. MySQL 数据库性能优化之SQL优化

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日  发布者: OurMySQL 来源:简朝阳 ...

  8. MySQL数据库性能优化的关键参数(转)

    我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...

  9. MySQL数据库性能优化史诗级大总结

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好 ...

  10. MySQL索引性能优化

    01.MySQL:性能优化方案 在应用开发的过程中,由于前期数据量少,开发人员编写的SQL语句或者数据库整体解决方案都更重视在功能上的实现,但是当应用系统正式上线后,随着生成数据量的急剧增长,很多SQ ...

最新文章

  1. [20170420]关于延迟块清除3.txt
  2. vue中slot(插槽)详解,slot、slot-scope和v-slot
  3. JDK内置工具--jconsole
  4. jQuery实现星星评分功能
  5. php手机网站底部导航代码,jQuery微信手机端底部弹出导航菜单列表代码
  6. [Linux] LD_LIBRARY_PATH
  7. gdb调试Python进程
  8. “实时SPC软件”的“实时”性指什么?一探究竟!
  9. VS2013+简单稀疏光束调整库SSBA配置(64位编译)
  10. python简单的购物程序代码打折_Python进阶之路——简单购物代码
  11. 51Nod-1183-编辑距离
  12. 【C++】关于日历编程的一点思考
  13. springboot无法打开 jsp 页面变成下载解决办法
  14. DOS命令/批处理文件大全
  15. p牛java安全漫谈学习笔记(2)_反序列化与urldns链(基础)
  16. Win11新电脑开机跳过联网解决方法
  17. OSG笔记一:在Win7、VS2010下配置OSG3.4
  18. 19n20c的参数_LM2587S-12NSC
  19. jQuery mobile插件基础知识笔记
  20. vue导出table数据为zip压缩文件(学习篇)

热门文章

  1. Java 第27章 JDBC
  2. 再谈访问修饰符——读《你必须知道的.net》
  3. hdu4846 最大子正方形(dp)
  4. hdu4665 DFS
  5. codeforces 229C
  6. 【错误记录】Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )
  7. 【Android 逆向】GDA 逆向工具安装 ( GDA 下载 | GDA 简介 | 运行 GDA 分析 APK 文件 )
  8. 【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
  9. 【Flutter】Flutter 混合开发 ( 混合开发中 Flutter 的 热重启 / 热加载 )
  10. 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )