目录

1. 概述

2. 执行计划使用

2.1.执行计划详解

2.1.1. 执行计划-ID

2.1.2.执行计划select_type

2.1.3.执行计划-table

2.1.4.执行计划-type

2.1.5.执行计划possible_key和key

2.1.6.执行计划key_len

2.1.7.执行计划ref

2.1.8.执行计划rows

2.1.9.执行计划Extra


1. 概述

在平时的开发工作中,少不了数据库的使用,那么就会涉及到sql语句,如何知道sql语句执行的过程,以及sql语句执行的性能,通过执行计划模拟优化器执行sql进行分析

2. 执行计划使用

语法:EXPLAIN/DESC + SQL语句

例如:explain select * from user;

执行计划输出内容:

EXPLAIN SELECT * FROM test_tb1;

执行计划id、查询类型、查询表、分区,索引使用情况、表之间的引用等

2.1.执行计划详解

2.1.1. 执行计划-ID

select查询序列号,如果id相同,则从上到下顺序执行,如果不相同,序列号大的优先级比较高,先执行

ID相同:

EXPLAIN SELECT * FROM t1,t2,t3 WHERE t1.`id`=t2.`t1_id` AND t2.`id`=t3.`t2_id`;

ID不同:

EXPLAIN SELECT t1.* FROM t1 WHERE t1.`id`=
    (SELECT t2.`t1_id` FROM t2 WHERE t2.`id`=
         (SELECT t3.`t2_id` FROM t3 WHERE t3.`id`=1));

2.1.2.执行计划select_type

查询类型主要用来说明查询的类型:普通查询、联合查询、子查询等

序号 select_type 说明
1 SIMPLE 简单的查询,查询中不饱和子查询或者Union
2 PRIMARY 查询中包含任何复杂的子查询,最外层的查询类型为PRIMARY
3 SUBQUERY SELECT或者where中包含子查询
4 DERIVED 在from中包含子查询被标记为DERIVED(衍生),Mysql会递归查询这些子查询,将查询结果放入临时表
5 UNION 第二个select中查询UNION,则被标记为UNION,如果UNION出现在from子查询中,最外层被标记为DERIVED
6        UNION RESULT 从UNION表获取结果的select

SIMPLE举例:

sql语句:EXPLAIN SELECT * FROM t1;

PRIMARY、SUBQUERY举例:

sql语句: EXPLAIN SELECT id,(SELECT NAME FROM t2 WHERE t2.`id`=1) FROM t1;

2.1.3.执行计划-table

表示查询数据所在的表

2.1.4.执行计划-type

type代表访问类型,是判断sql执行性能比较关键的一个字段,性能从高到低依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

system:表示只有一条数据,类似于系统表,是const的一种特例

const:表示通过索引一次就查询到数据,比较块,用于primary key(主键)和unique唯一索引

eq_ref:用于“=”运算符比较的索引列

EXPLAIN SELECT * FROM t1,t2 WHERE t1.id = t2.id;

ref:非唯一索引扫描

rang:检索给的范围的值,使用一个索引进行选择,where后面使用between、>、<、in等

EXPLAIN SELECT * FROM t1 WHERE id > 0;

index:当前查询的结果全部为索引列,虽然也是全部扫描,但是只查询索引数据,没有之间查询数据

EXPLAIN SELECT id FROM t1 WHERE id > 0;

all:遍历全部查询

EXPLAIN SELECT * FROM t1;

2.1.5.执行计划possible_key和key

possible_key:可能使用的索引

key:实际使用的索引,如果为null,表示没有用到索引

2.1.6.执行计划key_len

表示索引中使用的字节数,可以根据这个字段计算查询中索引使用的长度,长度越短越好。

2.1.7.执行计划ref

表示索引的哪一列被使用

根据ref可以看出test库的t1表的id索引被使用

2.1.8.执行计划rows

根据表统计信息和索引选用情况,大致计算出查询到所需数据需要查询的行数

2.1.9.执行计划Extra

using where:表示使用了where过滤

using index:表示使用了覆盖索引,避免使用表数据

using join buffer:表示使用了链接缓存

Mysql执行计划-看这一篇就够了相关推荐

  1. Mysql全面总结(看这一篇就够了)

    声明:本文参考三太子敖丙的<Mysql总结> 断断续续看了许多mysql的文章,留在脑海的就是 事务 索引 集群 本文就梳理下所学的知识 1.存储引擎 1.1 InnoDB InnoDB ...

  2. Mysql 备份恢复看这一篇就够了

    Mysql 备份恢复 一.备份分类.备份策略 1.1 造成数据丢失的原因: 程序错误 人为操作错误 运算错误 磁盘故障 灾难(如火灾.地震)和盗窃 1.2 数据库备份的分类 1)物理备份:对数据库操作 ...

  3. mysql执行计划缓存在哪_怎么去看懂mysql的执行计划

    mysql的查看执行计划的语句很简单,explain+你要执行的sql语句就OK了. 举一个例子 EXPLAIN SELECT * from employees where employees.gen ...

  4. 怎么看mysql执行计划

    前言 mysql是关系型数据库中比较流行的一款数据库.在工作中使用mysql,难免会遇到sql执行缓慢的情况.这时候,我们就需要查看sql的执行计划,以此来分析sql执行缓慢的问题所在. 如何查看my ...

  5. 理解索引:MySQL执行计划详细介绍

    为什么80%的码农都做不了架构师?>>>    最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说 ...

  6. MySQL执行计划(MySQL调优的重要利器)

    文章目录 看完本篇文章你能学到什么? 一.MySQL执行计划 1.1 id字段 1.2 select_type 字段 1.3 table 字段 1.4 partitions 字段 1.5 type字段 ...

  7. mysql 执行计划extra_mysql执行计划explain type和extra

    mysql执行计划,搞定type和extra就能优化大部分sql了.type为主,extra为辅. type: system表只有一行,MyISAM引擎. const常量连接,表最多只有一行匹配,通用 ...

  8. [数据库] ------ mysql 执行计划

    mysql 执行计划 简单来说,mysql整体架构分为三块:应用层,逻辑层,物理层 应用层:负责与客户端交互,建立连接,返回数据,响应请求. 逻辑层:负责查询处理,事务管理等 物理层:实际物理磁盘上存 ...

  9. Mysql执行计划含义,mysql执行计划介绍

    烂sql不仅直接影响sql的响应时间,更影响db的性能,导致其它正常的sql响应时间变长.如何写好sql,学会看执行计划至关重要.下面我简单讲讲mysql的执行计划,只列出了一些常见的情况,希望对大家 ...

最新文章

  1. 有的时候入门只是一瞬间
  2. DiscoveryService.getRemoteAdvertisements是否会获得本地通告?
  3. css居中最佳方案,CSS 水平、垂直居中的5种最佳方案
  4. springboot jar包运行中获取资源文件
  5. IIS反向代理/Rewrite/https卸载配置
  6. 面试题:怎么以最快速度计算8*4:
  7. you-get下载酷我音乐付费歌曲
  8. 五分钟学会安装电脑操作系统
  9. JavaScript学习手册五:JS数组
  10. mysql 查询优化实验报告_数据库优化查询实验报告.docx
  11. 通过Excel对各个商品的销售分析
  12. Revit二开 VS附加Revit时闪退程序
  13. 进阶 - Git的标签管理
  14. 南加大计算机本科学费,南加州大学学费多少 本科研究生学费介绍
  15. win10系统dnf安装不上服务器失败,win10 1903系统dnf图表系统组建失败的修复方法
  16. 简述覆盖表(Covering Arrays)
  17. RTSP/RTMP/GB28181协议/海康SDK/Ehome协议接入TSINGSEE青犀视频平台磁盘空间计算介绍
  18. 明代宫禁混乱:道士钻空子混宫中与宫女通奸
  19. 50套html网站模板,涵盖很多行业,各种类型html网站,各种行业html网站模板下载
  20. 三大运营商实现本机号码一键登录原理与应用

热门文章

  1. 批处理命令之find 和findstr
  2. python实现简单进度条_简单实现python进度条脚本
  3. 使用JAVA流操作(POI)将Excel表中数据取出,并直接生成完整SQL语句
  4. PS图片操作简单方法:
  5. 关于web安全测试在功能测试中的应用
  6. python中如何定义数组_python如何创建数组?
  7. 路由配置与管理——OSPF路由配置与管理1
  8. 阿里云服务器Linex系统搭建Tomcat部署Web项目
  9. tmall.item.outerid.update( 天猫商品/SKU商家编码更新接口 )
  10. java设计模式--2.原型模式