explain的使用

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在select语句之前增加explain关键字,Mysql会在查询上设置一个标记,执行查询会返回执行计划的信息,并不会执行这条SQL,就比如下面这个

SQL语句性能统计指标:

id: select语句标识符
select_type:select语句查询类型
table: 查询用到的表
partitions: 查询匹配到的分区
type:表连接类型
possible_keys:可能用到的索引
key:时间用到的索引
key_len:索引长度
ref:查询条件中的列
rows:预计扫描的行数
filtered:过滤行所占的百分比
Extra:附加信息

explain字段详解

id列

id表示查询语句的序号,自动分配,顺序递增,值越大,执行优先级越高 id相同是,优先级由上而下

select_type列

select_type表示查询类型,常见的有SIMPLE简单查询,PRIMARY主查询,SUBQUERY子查询、UNION联合查询、UNION RESULT联合临时表结果等。

table列

table表示SQL语句查询的表名、表别名、临时表名。

partitions列

partitions表示SQL查询匹配到的分区。没有分区的话显示NULL

type列

type表示表连接类型或者数据访问类型,就是表之间通过什么方式建立连接的,或者通过什么方式访问到数据的。具体有以下值,性能由好到差依次是:

system>const>eq_ref>ref>ref_or_null>index_merge>range>index>ALL

system:当表中只有一行记录,也就是系统表,是const类型的特例

const:表示使用主键或者唯一性索引进行等值查询,最多返回一条记录,性能较好,推荐使用。

eq_ref:表示表连接只有到了主键或者唯一性索引

ref:表示使用非唯一性索引进行等值查询

ref_of_null:表好似使用非唯一性索引进行等值查询,并且包含了null值的行

index_merge:表示用到索引合并的优化逻辑,即用到的多个索引

range:表示用到了索引范围查询

index:表示使用索引进行全表扫描

ALL:表示全表扫描,性能最差

possible_keys列

表示可能用到的索引列,实际查询并不一定能用到。

key列

表示实际查询用到的索引列

key_len列

表示索引所占的字节数。每种类型所占的字节数如下:

ref列

表示where语句或者表连接中与索引比较的参数,常见的有const(常量)、func(函数)、字段名。如果没用到索引,则显示为NULL

rows列

表示执行SQL语句所扫描的行数

filtered列

表示按条件过滤的表行的百分比 用来估算与其他表连接是扫描的行数,row x filtered=252004 x 10% =25万行

Extra列

表示一些额外的扩展信息,不适合在其他列展示,却又十分重要

Using wher:表示使用了wher条件搜索,但没有使用索引

Using index:表示用到了覆盖索引,即在索引上就查到了所需数据,无需二次回表查询,性能较好

Using filesort:表示使用了外部排序,及排序字段没有用到索引

Using filesort:表示使用了外部排序,即排序字段灭有用到索引

Using temporary:表示用到了临时表

Using join buffer:表示在进行表关联的时候,没用用到索引,使用了连接缓存去存储临时结果。

Using index condition :表示用到索引下推的优化特性

mysql explain 优化的更多相关文章

  1. mysql explain优化

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

  2. 【MySQL】优化—工欲善其事,必先利其器之EXPLAIN

    接触MySQL已经有一段时间了,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器.最近我就打算了解下几个优化MySQL中经常用到的工具.今天就简单介绍下EXPLAIN. 环境准备 Explain ...

  3. 小白学习mysql之优化基础(EXPLAIN的连接类型)

    ## 导语很多情况下,有很多人用各种select语句查询到了他们想要的数据后,往往便以为工作圆满结束了.这些事情往往发生在一些学生亦或刚入职场但之前又没有很好数据库基础的小白身上,但所谓闻道有先后,只 ...

  4. mysql优化 mysql explain

    一篇文章: 使用use index优化sql查询   先看一下arena_match_index的表结构,大家注意表的索引结构CREATE TABLE `arena_match_index` (  ` ...

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

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

  6. mysql基础优化-explain的使用-mysql死锁

    MySQL的优化 主要包括三个方面,首先是SQL语句的优化,其次是表结构的优化(这里主要指索引的优化),最后是服务器配置的优化. 一.SQL语句的优化 在 where 及 order by 涉及的列上 ...

  7. python mysql索引 优化神器explain 慢查询

    ##############总结########## 数据库中专门帮助用户快速找到数据的一种数据结构 类似于字典的目录的索引 索引的作用:约束和加速查找 工作原理: b+树形结构 最上层是树根,中间是 ...

  8. mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)

    mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...

  9. MySQL性能优化神器Explain

    本文涉及:MySQL性能优化神器Explain的使用 简介 虽然使用Explain不能够马上调优我们的SQL,它也不能给予我们一些调整建议,但是它能够让我们了解MySQL 优化器是如何执行SQL 语句 ...

  10. MySql 性能优化之 Explain

    MySQL 之 Explain 输出分析 背景 前面的文章写过 MySQL 的事务和锁,这篇文章我们来聊聊 MySQL 的 Explain,估计大家在工作或者面试中多多少少都会接触过这个.可能工作中实 ...

随机推荐

  1. Error building Player because scripts had compiler errors

    报错信息如下: Error building Player because scripts had compiler errors Build completed with a result of ' ...

  2. maven加载本地的jar包

    方式1 ,通过scope = system的方式加载 <dependency> <groupId>com.sun.jna</groupId> <artifac ...

  3. Xilinx-英文缩写

    BEL: Basic Element of Logic, BEL是最底层的基本元素,也可以叫atomic unit(原子单位),BEL是FPGA中最小.不可分割的组件. ACP:Accelerator ...

  4. Vulnhub 靶场 DARKHOLE: 2

    Vulnhub 靶场 DARKHOLE: 2 前期准备 前期准备: 靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/ kali攻击机ip:192.1 ...

  5. yum无法安装nginx

    yum无法安装nginx,检查yum配置文件  

  6. 如何把百度地图左边的搜索列表导出成excel里?

    有很多人问我,怎么样能够快速的把BAIDU地图左边的搜索列表里的商家地图,电话,导出到EXCEL里. 我就开发了一个小软件,专门为快速的实现导出数据到EXCEL. 为了使用方便,已经将全国的所又省份, ...

  7. docker删除image

    删除<None><None>镜像 docker rmi $(docker images -f "dangling=true" -q) 如果删除时出现了ima ...

  8. download links

    1 anaconda https://mirrors.bfsu.edu.cn/anaconda/archive/

  9. Java之时间类

    时间类 Date类 ZonedDateTime: 带时区的时间 ZoneId: 带时区 Instant: 时间戳 日期格式化类 SimpleDateFormat DateTimeFormatter D ...

  10. SPI接口(续三)

    在SPI接口中,判断传输的数据位上电平的高低是通过时钟来衡量的,根据时钟的上升沿/下降沿和数据电平的保持/更改,可以组合出4种方式,具体如下图所示. 从上图中可以看出,时钟相位CPHA决定传输的数据电 ...