IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 精通MySQL之Explain执行计划 -> 正文阅读

[大数据]精通MySQL之Explain执行计划

目录

1 Explain意义

2 Explain用法

3 Explain分析字段


以下示例基于Mysql8.0版本

1 Explain意义

当数据库执行一条SQL语句返回结果,而我们需要知道数据库执行SQL语句时做了哪些操作就需要用到Explain指令。英文意思是解析,解释。

2 Explain用法

EXPLATN + 某条需要分析的sql语句

例:

3 Explain分析字段

字段属性解释

id

执行顺序id

数字

sql语句执行顺序,sql需要被分步执行时,数据库执行的顺序

id越大越先被解析执行,id相同时,从上往下解析执行

select_type

查询类型

SIMPLE

简单查询

简单的select查询,查询中不包含子查询或者union

PRIMARY

主查询

查询中包含任何复杂的子部分,最外层查询则被标记为primary

SUBQUERY

子查询

在select 或 where列表中包含了子查询

DERIVED

派生查询

在from列表中包含的子查询被标记为derived(衍生),外层查询会从这个派生查询的结果集(临时表)中查询数据

UNION

联合查询

若第二个select出现在union之后,则被标记为union;若union包含在from子句的子查询中,外层select将被标记为derived

UNION RESULT

联合结果集查询

从union表获取结果的查询
table表名被查询的表
partitions分区

操作的分区

mysql的表当数据量很大时可以分区存储。

分区的类型又分

1. Range partition(范围分区)

2. List partition(列表分区)

3. Hash partition(哈希分区)

4. Key partition(键值分区)

分区表相关博客

MySQL分区表详解_V1ncent Chen的博客-CSDN博客_mysql分区表

type

system

表只有一行记录(等于系统表),这是const类型的特列,平时不会出现,可以忽略不计

查找性能从上到下越来越差

我认为它于select_type的区别是,select_type代表我查了哪里,type表示我怎么查了它,前者为where后者为how。

性能从上到下越来越差

const表示通过索引一次就找到了,const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。
eq_ref唯一性索引扫描,一条索引匹配一条记录
ref非唯一性索引扫描,一条索引匹配多条记录
range对索引进行了范围扫描
index对所有索引进行查找
all对所有数据进行查找,常说的全表查询
possible_keys可能用到的索引查询具体字段时,此字段上设置的索引,但并不一定使用,或者无法使用。
key实际上用到的索引查询时,用到的索引
key_len索引所占字节数索引中使用的字节数,可通过该列计算查询中使用的索引的长度,索引所占的字节数越少越好
ref

引用列名

引用字段

表a和表b联合查询时,如果a表中的索引列被用于b表的查询的条件, 那么a表的索引列名会被显示到ref中(自己的理解)
row查询行数根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数
filtered过滤百分比比如通过某种type方式查询出100条数据,实际需要的数据只有70条,那么百分比为70%。因此一般情况这个值越大越好。但不是sql优化的唯一参考。

Extra

Using filesort对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称为“文件排序”十分重要的额外信息
Using temporary使用了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by
Using index表明相应操作使用了“覆盖索引”,所需查找的数据就在索引的叶子节点上。不需要访问表的数据行。因此在select查询字段时,如果查询的字段里有个别字段没有被索引覆盖,数据库就不会使用Using index,则需要读取整个行
Using where使用了where过滤
Using join buffer代表多表join时,生成了join缓冲区。
impossible where代表不可能的条件查询。比如where a=1 and a=2
select tables optimized away代表在没有GROUPBY子句的情况下,基于索引优化了MIN/MAX操作,或者对于MyISAM存储引擎优化了COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。
distinct优化了distinct操作,在找到第一匹配的元组后即停止找同样值的动作
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:15:32  更:2022-09-25 23:16:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:33:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码