explain 之 possible_keys 和 key 介绍|学习笔记

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

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

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


explain 之 possible_keys 和 key 介绍


.  possible_keys key 含义

possible key key 是一套,要一起讲。

1.这两个可以用判断你是否使用到了你的索引,也既来判断是否索引失效。

2.在多个索引竞争的前提下,MySQL 到底用到了哪个索引

Possible keys:显示可能应用在这张表中的索引,一个或多个。

查询涉及到的字段若存在索引,则该索引将被列出,但不一定被查询实际使用

示例1

主人你在我这张表上,建立了四个复合索引,来了一条 sql ,我自己进行分析和判断,四个里面和这次请求有关系的可能有两个,初步 mysql 判断可能用到两个索引,但不一定被查询使用。

Key :实际使用的索引。如果为 NULL ,则没有使用索引

査询中若使用了覆盖索引, 该索引仅出现在 key 列表中

mysql>explain select * from tbl_emp;

Id

Select_type

table

type

Possible_keys

key

Key_len

ref

rows

Extra

i

sinpile

Tbl_emp

all

NULL

NULL

NULL

NULL

8

 

1 row in set (0.00 sec)

重要的是 keykey null ,则表示索引失效,或者没有索引。

示例2

Mysql> explain select t2.*

-> From t1,t2,t3

-> where t1.id=t2.id and t1.id =t3.id

-> and t1.other_colmn=’’;

Possible_keysprimary,idx_t1primaryprimary

//理论上用主键索引

keyidx_t1primaryprimary

//实际上用了一个主键索引

3 rows in set (0.00 sec )

示例3

mysql>explain select t2.* from(

->select t3.id

->from t3

->wheye t3.other_colum=’’)s1,t2

->where s1.id =t2.id;

Possible_keysNULLprimaryNULL

//理论中没有用到索引

key NULLprimaryNULL

//实际也没有用到索引

3 rows in set (0.00 sec )

id 如果相同,可以认为是一组,从上往下顺序执行;在所有组中, id 值越大,优先级越高,越先执行

衍生= DERIVED

示例4

mysql>explain select * from (select * from t1 where id=1)d1;

Possible_keys NULLprimary

//理论上没有用到

keyNULLprimary

//实际也没有用到

2 rows in set (0.00 sec)

如果是子查询, id 的序号会递增, d 值越大优先级越高;越先被执行。

示例5

mysq1> explain select co11,co12 from t1;

type index 是索引扫描

Possible_keys NULL(理论上 possible_keys 没有用到扫描)

keyidx_col1_col2(实际上是用到了)

1row in set (0.00 sec )

覆盖索引

是指 select 查询的这些 col1col2 等查询的字段和我的索引建的个数的字段刚好吻合。简单而言 select 后面查询的字段,和我建复合索引的个数和顺序一一一致。

以下代码为覆盖索引示例:

mysq1> create index idx _co11_co12 on t2(co11,co12);

//建立的索引也是12共计两个,顺序也是12,个数也是两个,刚好建立的索引 col1 col2 ,查的数据也找 col1 col2 ,所以可以从索引上找到,而不用全盘扫描。

Query 0K,1001 rows affected (0.17 sec )

Records :101 Duplicates :В Warnings :в

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL 索引
不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?
不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?
95 0
|
SQL 数据库
ON DUPLICATE KEY UPDATE
ON DUPLICATE KEY UPDATE
136 0
ON DUPLICATE KEY UPDATE
|
存储 算法 关系型数据库
explain中key_len的作用
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
explain中key_len的作用
|
关系型数据库 MySQL 开发者
explain 之key-len 介绍|学习笔记
快速学习 explain 之 key-len 介绍
142 0
explain 之key-len 介绍|学习笔记
|
SQL 关系型数据库 MySQL
FAQ系列 | 解读EXPLAIN执行计划中的key_len
FAQ系列 | 解读EXPLAIN执行计划中的key_len
106 0
|
SQL 关系型数据库 MySQL
MySQL - key、primary key、unique key、index 区别(二)
MySQL - key、primary key、unique key、index 区别(二)
1080 0
|
存储 Oracle 关系型数据库
MySQL - key、primary key、unique key、index 区别(一)
MySQL - key、primary key、unique key、index 区别(一)
411 0
MySQL - key、primary key、unique key、index 区别(一)
|
关系型数据库 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列(三)
177 0
MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(三)
|
关系型数据库 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列(二)
175 0
MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)