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. windows安装elasticsearch

    1. 去官网 https://www.elastic.co/cn/ 下载 注意: ES对JDK版本有较高的要求,5.x及以上版本需要JDK8支持,本人此次使用2.4.6版本2. 下载后,JDK先安装, ...

  2. java Calendar的学习分享

    前言: 在我们的日常生活中,常常能看见时间.如:在我们的手机里,在一些网站上也能随处看到时间.那我们在项目的开发中,也常常涉及到时间的处理,对于我们经常会遇到和处理的问题.Java中专门为我们处理时间 ...

  3. SQL使用总结

    本文为转载:对于SQL的学习与使用,推荐大家去这儿,讲的很系统: http://www.w3school.com.cn/sql/index.asp 练习SQL的使用,推荐大家去这里: https:// ...

  4. 前端入门10-JavaScript语法之对象

    声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...

  5. 【代码笔记】Web-JavaScript-JavaScript void

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. Dvna for Owasp top 10 2017

    简介: DVNA(Damn Vulnerable Node Application),它是一款由Node.js打造的知名WEB漏洞测试平台,或许有些朋友已经使用过.它是用来给使用Node的WEB开发人 ...

  7. Skywalking部署常见问题以及注意事项

    Skywalking部署常见问题以及注意事项 Intro SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performanc ...

  8. 从0开始的Python学习003序列

    sequence 序列 序列是一组有顺序数据的集合.不知道怎么说明更贴切,因为python的创建变量是不用定义类型,所以在序列中(因为有序我先把它看作是一个有序数组)的元素也不会被类型限制. 序列可以 ...

  9. 启动期间的内存管理之引导分配器bootmem--Linux内存管理(十)

    在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后内核才能检 ...

  10. PowerDesigner导出SQL,注释为空时以name代替

    版本 操作步骤 打开Edit Current DBMS 选中Script->Objects->Column->Add 将Value中的内容全部替换为如下 %20:COLUMN% [% ...