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

前言

本文使用的MySQL数据库版本为8.0.28

参考的官方文档链接如下:

MySQL :: MySQL 8.0 Reference Manual :: 8.8.2 EXPLAIN Output Format

作用

用来查看MySQL是如何执行语句的信息,使用这个关键字并不会执行这条SQL语句;

EXPLAIN适用于SELECTDELETEINSERT、REREPLACEUPDATE语句。

使用方式

EXPLAIN SQL语句

如:

EXPLAIN SELECT a,b FROM test_table

执行结果

在这里插入图片描述

1、id

表示执行顺序;id值越大执行顺序越靠前,id值相同则按照自上而下的顺序执行。

2、rows列和filtered

rows * filtered / 100 可以估算出将要和explain中前一个表进行连接的行数(前一个表指explain中的id值小的表)

3、select_type

类型说明
SIMPLE简单查询。查询不包含子查询和union。
PRIMARY复杂查询中最外层的select。
SUBQUERY包含在select中的子查询(不在from子句中)
DERIVED包含在from子句中的子查询。

4、table

表示行数据引用的表的名称。还有其他出现的情况可以参考:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain_table

5、partitions

版本5.7以前,该项是EXPLAIN PARTITIONS显示的选项,5.7以后成为了默认选项;该列显示的为分区表命中的分区情况;非分区表该字段为NULL;

6、type

这一列表示访问类型,决定MySQL如何查找表中的行,查找数据行记录的大概范围。

常见的结果从优到差依次为:

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

一般来说,需要保证起码达到range级别,最好达到ref;其他的不常见的结果值请查看官方说明文档,这里只列举常见的。

类型说明
system该表只有一行,这里是const类型的特例。
const表示该表最多有一个匹配的行,通过索引一次就找到了;如果将主键放在WHERE列表中,MySQL可以将该查询转为一个常量。
eq_ref使用唯一性索引,每一个索引值,表中只有一条数据与之匹配。
ref相比eq_ref不使用唯一索引,而是使用普通索引或唯一性索引的部分前缀,索引要和某个值相比较,可能找到多个符合条件的行。
range一般出现在范围性查询,比如大于小于等操作中。
index表示全索引扫描。
ALL表示全表扫描,性能最差。

7、key_len

表示索引的长度。

计算规则如下:

类型长度
char(n)n字节长度
varchar(n)如果是utf-8,则长度3n+2字节,两个字节存储字符串长度
tinyint1字节
smallint2字节
int4字节
bigint8字节
date3字节
timestamp4字节
datetime8字节

另外:如果字段允许NULL,需要增加1字节记录是否为NULL。

8、ref

表示查询条件是什么类型,比如查询条件为常量时就是const

9、filtered

表示过滤比例,经过索引过滤后剩下多少满足;最大值为100,这意味着未对行进行筛选,将进行全表扫描;

10、Extra

这列展示额外信息。

类型说明
Using index使用覆盖索引,表示使用索引树就可以查询到所有的结果,不需要回表查询。
Using where使用where语句处理结果,并且查询的列未被索引覆盖。
Using index condition查询的列不被索引覆盖,where条件中是一个前导列的范围。
Using temporay表示使用了临时表。
Select tables optimized away使用了聚合函数,比如max、min来访问存在索引的字段。

注意:

① 如果在查询结果集中既有唯一索引,也有二级索引,这时会使用二级索引;辅助索引占用磁盘链比较少。

② 如果SQL中使用了不等于的时候,大多数情况下无法使用索引,会进行全表扫描。

③ SQL中使用了IS NULLIS NOT NULL大多数情况无法使用索引,会进行全表扫描。

④ SQL中使用LIKE模糊查询时,写法如%abc...无法使用索引,会进行全表扫描;百分号在后时会使用索引,如abc%;可以尝试使用覆盖索引,使被查询的列被索引覆盖。

⑤ 减少使用ORIN使用频率,多数情况下无法使用索引。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:34:29  更:2022-11-05 00:38:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 6:55:09-

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