三十七、【进阶】SQL的explain

1、explain

2、基础使用

在使用explain关键字时,只需要在所执行语句前加上explain即可

sql 复制代码
mysql> explain select * from stu where id=3;
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | stu   | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

3、id

4、select_type

5、type

(1)当根据主键or唯一索引进行访问时,type参数会显示为const:

sql 复制代码
mysql> explain select * from stu where id=3;
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | stu   | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

(2)当不查询任何表时,type参数显示为NULL:

sql 复制代码
mysql> explain select 'a';
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra          |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+
|  1 | SIMPLE      | NULL  | NULL       | NULL | NULL          | NULL | NULL    | NULL | NULL |     NULL | No tables used |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+
1 row in set, 1 warning (0.00 sec)

(3)使用非唯一性索引,type参数通常显示为ref:

6、possible_key

显示这张表上可能用到的索引,一个或者多个

7、Key

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

8、Key_len

表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好

9、rows

MySQL认为必须要执行查询的行数,在innodb引擎的表中,是一个估计值,可能并不总是准确的。

10、filtered

表示返回结果的行数栈读取行数的百分比,filtered的值越大越好

相关推荐
乌啼霜满天2491 分钟前
JDBC编程---Java
java·开发语言·sql
大白要努力!12 分钟前
Android opencv使用Core.hconcat 进行图像拼接
android·opencv
JH307333 分钟前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
天空中的野鸟1 小时前
Android音频采集
android·音视频
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
武子康2 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
小白也想学C2 小时前
Android 功耗分析(底层篇)
android·功耗
路有瑶台2 小时前
MySQL数据库学习(持续更新ing)
数据库·学习·mysql
曙曙学编程2 小时前
初级数据结构——树
android·java·数据结构
lwprain3 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat