美文网首页
MYSQL 之EXPLAIN

MYSQL 之EXPLAIN

作者: 675ea0b3a47d | 来源:发表于2019-08-14 14:40 被阅读0次

在日常开发中我们经常会碰到查询时间特别长的SQL语句(俗称慢SQL),为了提高系统的查询效率,我们需要对这些慢SQL进行优化总而提高用户的体验度。这个时候就要用到explain了,通过explain可以排查出该SQL的扫描范围,是全表扫描还是通过索引来查询。explain的使用如下所示:

日常开发中查询语句
select * from tb_user where username = '杨尼玛';
explain语句
explain select * from tb_user where username = '杨尼玛';

explain sql语句之后出来11列信息,如下图所示:


image.png

接着我们对上述的信息进行信息分析:
1 、id:选择标识符;

2、select_type:查询的类型,上图的查询类型为simple;

3、table:你查询的表,如上述sql语句中的tb_user表;

4、type:查询的类型,如全表查询、通过索引查询等;

5、possible_keys:查询时可能用到的索引;

6、key:查询时用到的索引;

7、key_len:索引字段的长度;

8、ref:ref:列与索引的比较;

9、rows:sql查询的记录(估算的行数);

10、filtered:按表条件过滤的行百分比;

11、Extra:执行情况的描述和说明;

12、partitions:匹配的分区

常用项解释
一:type:表示查询的类型,常见的类型有:ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)。
ALL:代表全表扫描;
index:表示该查询通过索引扫描;
range:只在给定的范围为检索或者扫描记录;
ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
eq_ref::类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件;
const、system::当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system;
NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成;

二:possible_key表示查询时可以使用那些索引在表中查找数据,但是该索引在实际查询中可能不使用。

三:key表示查询时实际用到的索引,该索引必须被possible_key包含。

相关文章

  • MySQL Explain 执行计划

    参考:MYSQL explain详解需求:Qunar MySQL基础培训 Explain显示了MySQL如何使用索...

  • MySQL之explain

    在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算...

  • MYSQL 之EXPLAIN

    在日常开发中我们经常会碰到查询时间特别长的SQL语句(俗称慢SQL),为了提高系统的查询效率,我们需要对这些慢SQ...

  • 第三个模块 MySQL-UUID、分词字典、MySQL全文索引

    论mysql5.7.13性能优化之索引优化mysql优化(1)show命令 慢查询日志 explain profi...

  • MySQL 性能优化神器 Explain 使用分析

    转载链接MySQL 性能优化神器 Explain 使用分析 简介 MySQL 提供了一个 EXPLAIN 命令, ...

  • MySQL Explain命令用法

    引用自 MySQL 性能优化神器 Explain 使用分析 一、介绍 explain显示了mysql如何使用索引...

  • 查询计划

    1.explain语句 mysql> explain select user,host from user; +-...

  • MySql--Explain 详解(上)

    具体细节 请去掘金购买《MySQL 是怎样运行的:从根儿上理解 MySQL》 EXPLAIN EXPLAIN语句输...

  • mysql explain 说明

    mysql explain 说明 总结学习一下mysql的explain 。innodb 列说明id就是每个sql...

  • mysql中explain详解

    explain能干啥 mysql官方介绍: When EXPLAIN is used with an explai...

网友评论

      本文标题:MYSQL 之EXPLAIN

      本文链接:https://www.haomeiwen.com/subject/cfegjctx.html