【MySQL】执行计划 explain 及 一条select语句在MySQL中的奇幻之旅

在这里插入图片描述

解释


| 列(Column) | 含义(Meaning) |

| — | — |

| id | The SELECT identifier(每个select子句的标识id) |

| select_type | The SELECT type(select语句的类型) |

| table | The table for the output row(当前表名) |

| partitions | The matching partitions (显示查询将访问的分区,如果你的查询是基于分区表) |

| type | The join type(当前表内访问方式) |

| possible_keys | The possible indexes to choose(可能使用到的索引) |

| key | The index actually chosen(经过优化器评估最终使用的索引) |

| key_len | The length of the chosen key (使用到的索引长度) |

| ref | The columns compared to the index(引用到的上一个表的列) |

| rows | Estimate of rows to be examined (要得到最终记录索要扫描经过的记录数) |

| filtered | Percentage of rows filtered by table condition(存储引擎返回的数据在server层过滤后,剩下满足查询的记录数量的比例) |

| extra | Additional information (额外的信息说明) |

重要字段(我个人认为的)再释义:

id:这列就是查询的编号,如果查询语句中没有子查询或者联合查询这个标识就一直是1。如存在子查询或者联合查询这个编号会自增。

type:此列是在优化SQL语句时最需要关注的列之一,此列显示了查询使用了何种类型。

以下排序从最优到最差:

system:表内只有一行数据

const:最多只会有一条记录匹配,常用于主键或者唯一索引为条件查询

eq_ref:当连接使用的索引为主键和唯一时会出现

ref:使用普通索引=或<=> 运算符进行比较将会出现

fulltext:使用全文索引

ref_or_null:跟ref类型类似,只是增加了null值的判断,实际用的不多。语句为where name = ‘kaka’ and name is null,name为普通索引。

index_merge:查询语句使用了俩个以上的索引,常见在使用and、or会出现,官方文档将此类型放在ref_or_null之后,但是在很多的情况下由于读取索引过多性能有可能还不如range

unique_subquery:用于where中的in查询,完全替换子查询,效率更高。语句为value IN (SELECT primary_key FROM single_table WHERE some_expr)

index_subquery:子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引

range:索引范围查询,常见于使用 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN()或者like等运算符的查询中。

index:索引全表扫描,把索引从头到尾扫一遍

all:全表扫描,性能最差。

key:上面写着

rows:这是mysql估算的需要扫描的行数(不是精确值)。这个值非常直观显示 SQL 的效率好坏, 原则上 rows 越少越好。

extra:在大多数情况下会出现以下几种情况。

Using index:使用了覆盖索引,查询列都为索引字段

Using where:使用了where语句

Using temporary :查询结果进行排序的时候使用了一张临时表

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值