MySQL性能优化之explain

本文深入探讨了如何利用Explain命令分析SQL查询的执行计划,解释了Explain输出的各项指标含义,如id、select_type、type、possible_keys、key、key_len、ref、rows和Extra,帮助读者理解SQL执行过程,提升查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。

explain是什么

使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈。

explain能干什么

在这里插入图片描述

explain怎么玩

explain + SQL语句

包含的信息:
在这里插入图片描述
①id:select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序
在这里插入图片描述
②select_type:查询的类型,主要用于区别普通查询、联合查询、子查询等的复杂查询
select_type种类:
在这里插入图片描述
select_type各字段代表的含义:
在这里插入图片描述
③table:显示这一行的数据是关于哪张表的。
④type种类(重要):显示查询使用了何种类型,从最好到最差依次是:system>const>eq_ref>ref>range>index>ALL
在这里插入图片描述
⑤possible_keys:显示可能应用在这张表中的索引,一个或多个。查询涉及的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用。
⑥key(重要):实际使用的索引。如果为null则没有使用索引。(查询中若使用了覆盖索引,则索引和查询的select字段重叠,在Extra中显示Using index)
⑦key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。在不损失精确性的情况下,长度越短越好。(key_len显示的值为索引最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的)
⑧ref:显示索引哪一列被使用了,如果可能的话,是一个常数。那些列或常量被用于查找索引列上的值
⑨rows:根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数。
⑩Extra(重要):包含不适合在其他列中显示但十分重要的额外信息。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值