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 |
+----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+

MySQL系列:性能优化的更多相关文章

  1. Mysql系列-性能优化神器EXPLAIN使用介绍及分析

    MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. EXPLAIN 命令用法十分简单, 在 SEL ...

  2. MySQL 数据库性能优化之索引优化

    接着上一篇 MySQL 数据库性能优化之表结构,这是 MySQL数据库性能优化专题 系列的第三篇文章:MySQL 数据库性能优化之索引优化 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引 ...

  3. MySQL数据库性能优化专题

    摘录: 书:<MySQL性能调优与架构设计> 一个系列: (按顺序排一下) MySQL 数据库性能优化之缓存参数优化 http://isky000.com/database/mysql-p ...

  4. MySQL 数据库性能优化之缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  5. 1229【MySQL】性能优化之 Index Condition Pushdown

    转自http://blog.itpub.net/22664653/viewspace-1210844/  [MySQL]性能优化之 Index Condition Pushdown2014-07-06 ...

  6. 深入理解MySQL开发性能优化.pptx

    深入理解MySQL开发性能优化.pptx,依旧上传baidu pan http://pan.baidu.com/s/1jIwGslS,视频暂未出,培训完成后会更新.

  7. mysql数据库性能优化(包括SQL,表结构,索引,缓存)

    优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...

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

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

  9. 从数据库、代码和服务器对PHP网站Mysql做性能优化

    数据库优化是PHP面试几乎都会被问到的事情,也是我们工作中应该注意的事情,当然,如果是小网站无所谓优化不优化,网站访问量大了自然会暴漏数据库的瓶颈,这个瓶颈是各方面问题综合导致的,下面我们来做下数据库 ...

  10. MySQL查询性能优化(精)

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

随机推荐

  1. 20, CSS 定义选择器

    1. ID 与类 2. 层叠 3. 分组 4. 继承 5. 上下文选择器 6. 子类选择器 7. 其他选择器 8. 结构与注释 20.1 ID 与类 选择器是用于控制页面设计的样式.即 ID 选择器何 ...

  2. 17 , CSS 区块、浮动、定位、溢出、滚动条

    1.CSS 中区块的使用 2.CSS 中浮动的使用 3.CSS 中定位的使用 4.CSS 中溢出的使用 5.CSS 中滚动条的使用 17.1 CSS 中区块的使用 属性名称 属性值 说明 width ...

  3. css——rgba()和opacity的区别

    (学习笔记) 首先他们都能实现透明效果,不同的是作用对象. rgba()是css中设置背景颜色中的一个属性.而opacity是css的一个属性,也就是rgba()的作用对象是元素的背景颜色或元素的颜色 ...

  4. eclipse配置freemarker,*.ftl文件

    亲测,提供2种方式,效果都不错: ----------------------------------------- 1.直接下载相应的插件.只需要下载FreeMarker的识别Jar包就可以:888 ...

  5. Thrift 入门教程

    1. 概述 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erl ...

  6. Java新知识系列 八

    什么是死锁,死锁的原因和必要条件:       []什么是死锁,死锁的原因和必要条件: 死锁:死锁的原因在于进程在等待其它进程占有的某些资源,而自身的资源又被其它进程等待着,造成了死循环. 出现死锁的 ...

  7. Vue一个案例引发「内容分发slot」的最全总结

    今天我们继续来说说 Vue,目前一直在自学 Vue 然后也开始做一个项目实战,我一直认为在实战中去发现问题然后解决问题的学习方式是最好的,所以我在学习一些 Vue 的理论之后,就开始自己利用业余时间做 ...

  8. The account that is running SQL Server Setup does not have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the rig

    安装SQL SERVER 是规则检查提示权限问题 运行secpol.msc,没有Debug program权限,添加即可,如果已加域则要在域策略修改,或退域安装后在加域.

  9. Review: Basic Knowledge about SQL

    非原创,转自Github:enochtangg/quick-SQL-cheatsheet SQL 语句用法的速查表. 内容 查找数据的查询 修改数据的查询 聚合查询 连接查询 视图查询 修改表的查询 ...

  10. vue 应用生产环境的 webpack 打包配置优化

    转:https://blog.csdn.net/robin_star_/article/details/83856363 前言:很好的打包优化的帖子,还没来的急去实测验证 1. 去掉 console ...