三十七、【进阶】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的值越大越好

相关推荐
Mr YiRan18 小时前
多线程性能优化基础
android·java·开发语言·性能优化
liyi_hz200818 小时前
O2OA (翱途)开发平台新版本发布预告:架构升级、性能跃迁、功能全面进化
android·java·javascript·开源软件
Huangyi19 小时前
第一节:Flow的基础知识
android·前端·kotlin
初见00119 小时前
Java MySQL 事务隔离级别深度剖析:从幻读到MVCC
mysql
hweiyu0019 小时前
Android基础入门教程(视频教程)
android
nzxzn20 小时前
MYSQL第二次作业
数据库·mysql
冻咸鱼21 小时前
MySQL的CRUD
数据库·mysql·oracle
初见0011 天前
Java MySQL 索引深度解析:从原理到最佳实践
mysql
冻咸鱼1 天前
MySQL中表操作
android·sql·mysql·oracle
心态特好1 天前
从缓存到分库分表:MySQL 高并发海量数据解决方案全解析
数据库·mysql·缓存