Explain 之 type 介绍|学习笔记

简介: 快速学习 Explain 之 type 介绍

开发者学堂课程【MySQL 高级应用 - 索引和锁Explain 之 type 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/598/detail/8601


Explain 之 type 介绍


一.释义

SQL 的优化和是否是最佳状态息息相关,他的值有多个

image.png

1. 访问类型排列

2. 显示查询使用了何种类型

3. 从最好到最差依次是:

system > const > eq _ ref > ref > range > index > ALL
为什么all是最差的呢?

不要过度优化,最好的程序是不优化,不要为了优化而优化。上百万的,性能开始下降。
【只要达到 range ref 级别。】type 显示的是访问类型,是较为重要的一个指标,

结果值从最好到最坏依次是:

system > const > eq _ ref > ref > fultext > ref _ or _ nul > index merge > unique subquery index _ Subquery > range > index

system > const > eq _ ref > ref > rang > index > ALL 【工作中常见的】

一般来说,得保证查询至少达到 range 级别,最好能达到 ref .
单表单行很快,但是没有技术含量没有意义。

各字段释义:

1. system:表只有一行记录【等于系统表】,这是 const 类型的特例,平时不会出现,这个也可以忽略不计

2. Const:表示通过索引一次就找到了,const 用于比较 primary key 或者 unique 索引。因为只匹配一行数据。所以很快。

如将主键置于 where 列表中, MySQL 就能将该查询转换为一个常量

3. Eq-ref :唯一性素引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描

4. Ref :非唯一性索引扫描,返回匹配某个单独值的所有行.

本质上也是一种索引访间,它返回所有匹配某个单独值的行,然而,

它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。

5. Range :只检索给定范围的行,使用一个索引来选择行。key 列显示使 了哪个索引一般就是在你的 where 语句中出现了 betveen <> in 等的查询。

raig这种范围扫描索引扫描比全表扫描要好,因为它只儒要开始于索引的某一点,而结東语另一点,不用扫描全部索引。

mysql> explain select fron ( select fron t1 where id d1;

I id I select _ type Itable l typel

l 1IPRIMARY I  Isysten

12IDERIUED I const mysq1> l t1

2 rows in set (0.00 sec )

mysql> explain select fron t1 t2 where t1.id=t2.id; Iid Iselect _ type Itable Itype

SIMPLE I t2 I ALL

I 1ISIMPLE I t1 i _ ref mysq1>

2 rows in set (0.00 sec )

mysql> ekplain SELEC Т. FRO Н HERE 1d betveen 30 and 60;

I 1d Iselect _ type Itable ItypeIpossible _ keys Ikey Ikey_

len I ref I rous IExtra

1ISIHPLE It1 Irange IPRI Н ARY IPRIARY I HULL 1 IUsing here

1 row in set (0.00sec)

WeenC

ysq1 ekplain select fron tHuhere 1d n (1,2,6):

I1d Iseleet _ type Itable Itype possible _ keys Ikey Ikey_len I

仅类型只遍

PRI И RY PRIHMRV

index

1 mysql

最好能达到

mysql> explain select Fr00t1uherec01UП_1tn0ut_indnx

id I select _ type Itable Itype Ipossible _ keys Ikey Ikey _len I ref I rous IExtra

1 ISIMPLE I t1 I ALLINULL INULL INULLINULL I516 IUsing uhere 1

row in set (0.00 sec )

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
Java
【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response
【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response
1556 2
|
人工智能 Java 大数据
网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解
QQ用得起来越少了,现在就加入300+技术微信群,下方公众号回复"微信群"即可加入。 常用的网站性能测试指标有:吞吐量、并发数、响应时间、性能计数器等。
4829 0
|
Linux
如何看懂火焰图
如何看懂火焰图
1661 0
如何看懂火焰图
|
Arthas 监控 前端开发
Arthas学习笔记
Arthas学习笔记
|
SQL 消息中间件 分布式计算
大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现
大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现
350 0
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
定位技术 数据安全/隐私保护
3分钟部署 我的世界(Minecraft) 联机服务
如何通过计算巢快速部署《我的世界(Minecraft)》联机服务
3分钟部署 我的世界(Minecraft) 联机服务
|
机器学习/深度学习 算法 数据挖掘
技术经验分享:DTW和DBA
技术经验分享:DTW和DBA
272 0
|
存储 算法 图形学
【计算机图形学】实验二 用扫描线算法实现多边形填充
【计算机图形学】实验二 用扫描线算法实现多边形填充
985 2
|
关系型数据库 MySQL API
微服务框架 go-zero 快速实战
微服务框架 go-zero 快速实战
798 1