Explain 之 type 介绍|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 索引
EXPLAIN Output Interpretation
通过分析`EXPLAIN`输出的行列乘积,可评估MySQL连接效率,估算查询所需检查的行数。该乘积还影响`max-join-size`系统变量对多表SELECT语句的执行与中止决策。示例展示了如何逐步优化多表连接,通过调整列类型和大小来减少行乘积,从而提高查询性能。最终,结合索引分析,实现更优的连接效果。
|
存储 SQL 关系型数据库
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column的解决办法
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column的解决办法
149 0
|
关系型数据库 MySQL Windows
Mysql (ONLY_FULL_GROUP_BY) Expression #1 of SELECT list is not in GROUP BY ...
Mysql (ONLY_FULL_GROUP_BY) Expression #1 of SELECT list is not in GROUP BY ...
85 0
|
SQL 存储 缓存
【MySQL从入门到精通】【高级篇】(二十四)EXPLAIN中select_type,partition,type,key,key_len字段的剖析
上一篇文章我们介绍了【MySQL从入门到精通】【高级篇】(二十三)EXPLAIN的概述与table,id字段的剖析,重点对EXPLAIN命令进行了阐述,并且对table,id字段进行了剖析。这篇文章接着对EXPLAIN命令的其余字段进行解析,本文将介绍select_type,partition,type,key,key_len 字段的含义。其中:读者朋友们需要重点掌握 select_type,type 两个字段的含义。
253 0
【MySQL从入门到精通】【高级篇】(二十四)EXPLAIN中select_type,partition,type,key,key_len字段的剖析
|
关系型数据库 MySQL 开发者
Explain 之 id 介绍|学习笔记
快速学习 Explain 之 id 介绍
101 0
Explain 之 id 介绍|学习笔记
|
关系型数据库 MySQL vr&ar
explain 之 ref 介绍|学习笔记
快速学习 explain 之 ref 介绍
769 0
explain 之 ref 介绍|学习笔记
|
关系型数据库 MySQL 开发者
explain 之 select-type 和 table 介绍|学习笔记
快速学习 explain 之 select-type 和 table 介绍
808 0
|
存储 缓存 关系型数据库
explain 之 extra 介绍|学习笔记
快速学习 explain 之 extra 介绍
145 0
|
SQL 关系型数据库 MySQL
Select type&partitions (2)—mysql执行计划(四十八)
Select type&partitions (2)—mysql执行计划(四十八)
|
关系型数据库 MySQL 索引
MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(五)
MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(五)
192 0
MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(五)