explain 之 extra 介绍|学习笔记

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

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

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


explain 之 extra 介绍


一.释义

包含在其他列中显示但十分重要的额外信息【最重要的一段字段属性之一】。

额外信息:

1.using  filesort

说明 MySQL 会对数据使用一个外部的索引排序,而不是按照表内的索引完成的排序操作称为“文件排序”。

【出现某种情况用不上索引,用上 using filesort 比较危险】

Using filesort

mysq1> explain select co11 fron t1 uhere co11=' ac ' order by co13\ G

id :1

select _ type : SI Н PLE

table :t1 type : ref

possible _ keys : idx _co11_co12_col3

key : idx _co11_co12_co13 key _ len :13

ref : const rous :142

Extra : Using uhere ; Using index ; Using filesort

1 row in set (0.00 sec )

ny5q1> expiain Seiect cO11FrOmt1 utere c011" ac Order by c012,C013\

id :1

select _ type : SIHPLE

table :t1 type : ref

mossible _ keys : idx _co11_co12_co13

key : idx _co11_co12_co13 key _ len :13

ref : const rouS :142

Extra : Using where ; Using index

row in set (0.00 sec )

2.using temporary

使用了临时表保存中间结果,MySQL 在对查询结果排序时使用临时表。

常见于排序 order by 和分组查询 group by .

id :1

select _ type : SIHPLE

table :t1 type : range

possible _ keys : idx _co11_co12

key : idx _co11_co12 key _ len :13

ref : NULL

rowS :569

Extra : Using where ; Using index ; Using tenporary ; Using filesort

row in set (0.00 sec )

mysq1> explain select co11 fron t1 where co11 in (' ac ',' ab ') group by co11,co12\

id :1

select _ type : SIMPLE

table :t1 type : range

possible _ keys : idx _col1_co12_co13

key : idx _co11_co12_co13 key _ len :26Г

ref : HULL rouS :

Extra : Using uhere ; Using index for group - by

3.using index:

【遇见这种情况不用管,前两者比较倒霉。】

表示相应的 select 操作中使用了覆盖索引( Covering Index ),避免访问了表的数据行,效率不错!如果同时出现 using where ,表明索引被用来执行索引键值的查找;

如果没有同时出现 using where ,表明索引用来读取数据而非执行查找动作。

4.using where:表示使用了 where 过滤

5.Using join buffer:使用了连接缓存

6.Impossible wherewhere 子句的值总是 FALSE,不能用来获取任何元组

7.Select tables optimized away

在没有groupby子句的情况下,基于索引优化 min/max 操作或者对于 myisam 存储引擎优化【count*】操作,不必等到执行阶段在进行计算,查询执行计划生成的阶段即完成优化。

8. Distinct:优化 distinct 操作,在找到第一匹配的元组后即停止找同样值的动作。

MysQL> explaln select co12 fron t uhere col1-' ab *;

p055IDieeyIkeyI key _ len Iref Iros IEktra

( Cove : !11… idx _col1_co12 I idx _cel1_col2I13 Iconst I143IUsing uhere ; Using index

被用来执

1 row in set (0.0sec)

索引用来

如果同时出现 using where ,表明索引被用来执行索引键值的查找;

Пysq1> explaia select col1,ce12 fron t1;

1I select _ type I table I type Ipossib1e_ keys I key I key _1en I ref Iros IExtra

1ISIPLE It1Iindek I Н ULL I1dx_col1_co12I39 IHULL I682 IUsing indek

r0u n set (0.0sec

如果没有同时出现 using where ,表明索引用来读取数据而非执行查找动作。

覆盖索引( Covering Index ),一说为索引覆盖。

理解方式一:

就是 select 的数据列只用从索引中就能够取得,不必读取数据行, MysQL 可以利用索引返回 select 列表中的字段,而不必根据索引再次读取数据文件,换句话说查询列要被所建的索引覆盖。

理解方式ニ:

索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。

一个索引包含了(或覆盖了)满足査询结果的数据就叫做覆索引

注意:

如果要使用覆盖索引,一定要注意 select 例表中只取出需要的列,不可 select ,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
JSON 关系型数据库 MySQL
EXPLAIN Join Types
`EXPLAIN` 输出的 `type` 列描述了表连接方式,从最优到最差包括:`system`(单行系统表)、`const`(最多一行,视为常量)、`eq_ref`(最佳连接类型,用于主键或唯一索引)、`ref`(基于索引的部分匹配)、`fulltext`(全文索引)、`ref_or_null`(包含 NULL 值的行)、`index_merge`(索引合并优化)、`unique_subquery` 和 `index_subquery`(索引查找替代子查询)、`range`(索引范围内检索)、`index`(索引扫描)、`ALL`(全表扫描,通常最差)。
|
4月前
|
关系型数据库 MySQL 索引
EXPLAIN Output Interpretation
通过分析`EXPLAIN`输出的行列乘积,可评估MySQL连接效率,估算查询所需检查的行数。该乘积还影响`max-join-size`系统变量对多表SELECT语句的执行与中止决策。示例展示了如何逐步优化多表连接,通过调整列类型和大小来减少行乘积,从而提高查询性能。最终,结合索引分析,实现更优的连接效果。
|
4月前
|
JSON 关系型数据库 MySQL
EXPLAIN Extra Information
`EXPLAIN` 输出的 `Extra` 列提供了 MySQL 解析查询的附加信息。此列可能的值及其对应的 JSON 属性如下: - **Using filesort / using_filesort**:需额外排序。 - **Using temporary / using_temporary_table**:需创建临时表。 - **Deleting all rows**:删除所有行。 - **Distinct / distinct**:寻找不同值。 - **FirstMatch(tbl_name)**:使用半连接策略。
|
缓存 关系型数据库 MySQL
explain
explain
87 0
|
存储 SQL JSON
【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
上一篇文章我们介绍了 【MySQL从入门到精通】【高级篇】(二十四)EXPLAIN中select_type,partition,type,key,key_len字段的剖析,重点介绍了EXPLAIN命令的select_type,partition,type,key,key_len 字段含义。这篇文章我将接着介绍剩余字段的含义。本文会介绍ref、rows、filtered、Extra这几个字段。比较重要的两个字段是rows、Extra
1524 0
【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
|
存储 SQL 关系型数据库
Optimizing Queries with EXPLAIN(用explain来优化查询语句)
Optimizing Queries with EXPLAIN(用explain来优化查询语句)
51 0
|
SQL 关系型数据库 MySQL
Explain 之 type 介绍|学习笔记
快速学习 Explain 之 type 介绍
147 0
Explain 之 type 介绍|学习笔记
|
关系型数据库 MySQL 开发者
explain 之 rows 介绍|学习笔记
快速学习 explain 之 rows 介绍
174 0
explain 之 rows 介绍|学习笔记
|
关系型数据库 MySQL 开发者
Explain 之 id 介绍|学习笔记
快速学习 Explain 之 id 介绍
111 0
Explain 之 id 介绍|学习笔记
|
关系型数据库 MySQL vr&ar
explain 之 ref 介绍|学习笔记
快速学习 explain 之 ref 介绍
788 0
explain 之 ref 介绍|学习笔记