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

Explain工具介绍

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或结构的性能瓶颈。在select语句之前增加explain关键字,MySQL会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。(如果from中包含子查询,仍会执行该子查询,将结果表放入临时表中);

explain两个变种

1、explain extended:会在explain的基础上额外提供一些查询优化的信息。紧随其后通过show warnings命令可以得到优化的查询语句,从而看出优化器优化了什么;

2、explain partitions:相比explain多了个partition字段,如果查询是基于分区表的话,会显示查询将访问的分区;

explain中的列

explain select * from b_resource_comment where id = 20;

id列:是select的序号列,id越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行;

select_type列:表示对应行是简单还是复杂查询;

? ? ? ? simple:简单查询,不包含子查询和union

? ? ? ? primary:复杂查询中的最外层select

? ? ? ? subquery:包含在select中的子查询(不在from子句中)

? ? ? ? derived:包含在from子句中的子查询。mysql会将结果存放在一个临时表中,也称派生表

type列:表示关联类型或访问类型,查找数据行记录的大概范围;

? ? ? ? 从好到坏排序:system > const > eq_ref > ref > index > ALL

一般将sql优化到range级别之上

? ? ? ? null:mysql能够在优化阶段分解查询语句,在执行阶段不用再访问表或索引;

? ? ? ? const,system:能对查询的某部分进行优化并将其转化为一个常量,system是特例,只有一条数据匹配;

? ? ? ? eq_ref:primary key或unique key索引的所有部分被连接使用,最多只会返回一条符合条件的记录;

? ? ? ? ref:使用普通索引或者唯一性索引的部分前缀,索引要和某个值比较,可能会找到多个符合条件的记录;

? ? ? ? ? range:范围扫描通常出现在in,between,>,<,>= 等操作中。使用一个索引来检索给定范围的记录;

? ? ? ? 如:

explain select * from b_resource where id >1

? ? ? ? index:扫描全索引就能拿到结果,一般是扫描某个二级索引,遍历叶子结点,比ALL通常快一些;

? ? ? ? ALL:即全表扫描,扫描聚集索引的所有叶子节点

possible_keys列:显示可能使用哪些索引来查找? ?;

key列:显示mysql实际采用哪个索引来优化对该表的访问;

key_len列:显示mysql在索引里使用的字节数,可以算出具体使用了索引中的哪些列;

ref列:显示key列记录的索引中,表查找值所用到的列或常量

rows列:mysql预估要读取并监测的记录行数,而不是结果集的行数;

Extra列:额外信息,常见的重要值如下:

? ? ? ? Using index:使用了覆盖索引,不需要回表

? ? ? ? Using where:使用where语句,且查询的列未被索引覆盖,需要回表

? ? ? ? Using index condition:使用了索引,查询的列不完全被索引覆盖,不需要回表

? ? ? ? Using temporary:需要创建一张临时表来处理(需要优化)

? ? ? ? Using filesort:将用外部排序而不是索引排序,数据较小时在内存排序,否则在磁盘完成(需要优化)

? ? ? ? Select tables optimizied away:使用聚合函数来访问索引的某个字段;

sql优化总结:

? ? ? ? 1、一般sql性能优化到type > range 索引范围查找,级别以上

? ? ? ? 2、联合索引要遵守最左前缀法则

? ? ? ? 3、不在索引列上进行任何操作,否则会导致索引失效

? ? ? ? 4、覆盖索引,不回表;二级非聚集索引包含了需要查询的所有字段,不需要通过聚集索引二次查询数据

? ? ? ? 5、is null 和 is not null 无法使用索引,可以考虑使用‘’空字符串代替null,业务上做处理

? ? ? ? 6、避免隐式类型装换导致索引失效,传入的参数和字段的类型要一致,不能是name=1000

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:03:44  更:2022-09-24 21:05:25 
 
开发: 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 10:15:47-

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