2.mysql explain命令详解
EXPLAIN详解
SQL编写和解析
编写过程
select…distinct…from…join…on…where…group by…having…order by…limit…
解析过程
from…on…join…where…group by…having…select distinct…order by…limit…
执行计划:
mysql> explain select * from study s left join course c on c.age = s.snum where s.snum >50;
+----+-------------+-------+------------+------+---------------+-------+---------+-------------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+-------+---------+-------------+------+----------+-------------+
| 1 | SIMPLE | s | NULL | ALL | NULL | NULL | NULL | NULL | 2000 | 33.33 | Using where |
| 1 | SIMPLE | c | NULL | ref | i_age | i_age | 5 | mydb.s.snum | 494 | 100.00 | NULL |
+----+-------------+-------+------------+------+---------------+-------+---------+-------------+------+----------+-------------+
1、id
- id值相同,执行顺序由上至下;
- id值不同,优先执行值较大的查询(本质:在嵌套子查询时,先查内层,再查外层)
2、select type
primary
包含子查询SQL中的主查询(最外层)
subquery
包含子查询SQL中的子查询(非最外层)
simple
简单查询(不包含子查询、union)
derived
衍生查询
a、在from子查询中中有一张表
b、在from子查询中,如果有table1 union table2,则table1就是derived
3、table
- 查询使用的表
4、type(查询效率从上至下递减)
system
只有一条数据的系统表或衍生表只有一条数据的主查询
const
仅能查到一条数据的SQL,用于Primary key 或unique index
eq_ref
唯一性索引:对于每个索引键的查询,返回匹配唯一行的数据(有且只有1个,不能多,不能0),常见于primary key 和 unique key
ref
非唯一性索引,对于每个索引键的查询,返回匹配的所有行(0,多)
range
检索指定范围的行,where后面时一个范围查询(between,< >=,in有时候会失效,转为无索引查询)
index
扫描索引中的全部数据
all
扫描全表数据
5、ref
- 指明当前表所参照的字段
6、key_len
索引长度,常用于判断复合索引是否被完全使用:
a、在utf8中,1个字符占3个字节,char(20)使用60字节;
b、如果索引字段可以为null,会用1个字节用于标识;
c、用两个字节标识可变长度, varchar(20) 使用62字节
7、possible keys
- 可能用到的索引
8、key
- 实际使用的索引
9、rows
- 实际通过索引查询的数据个数
10、extra
- using filesort
order by 使用了文件排序 - using temporary
group by 使用了临时表 - using where
回表查询 - using index
使用了索引覆盖 - impossible where
不可能实现的where查询 - using join buffer
mysql使用了连接缓存 - block nested-loop join
使用了块嵌套循环
2.mysql explain命令详解的更多相关文章
- 转载:MySQL EXPLAIN 命令详解学习
转载自:https://blog.csdn.net/mchdba/article/details/9190771 MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查 ...
- MySQL EXPLAIN 命令详解
MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提 ...
- MySQL Explain命令详解--表的读取顺序,数据读取操作的类型等
表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的) 不损失精确 ...
- MySQL EXPLAIN 命令详解学习
http://blog.csdn.net/mchdba/article/details/9190771
- 一次浴火重生的MySQL优化(EXPLAIN命令详解)
一直对SQL优化的技能心存无限的向往,之前面试的时候有很多面试官都会来一句,你会优化吗?我说我不太会,这时可能很多人就会有点儿说法了,比如会说不要使用通配符*去检索表.给常常使用的列建立索引.还有创建 ...
- 【MySQL】EXPLAIN命令详解
具体参考: https://www.cnblogs.com/gomysql/p/3720123.html 原文如下: 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么 ...
- SQL中EXPLAIN命令详解---(转)
MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQ ...
- EXPLAIN 命令详解
在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都需要通过E ...
- Mysql常用命令详解
Mysql安装目录 数据库目录 /var/lib/mysql/ 配置文件 /usr/share/mysql(mysql.server命令及配置文件) 相关命令 /usr/bin(mysqladmin ...
随机推荐
- 【线程池】自己声明临时线程池一定要shutdown!
场景: 某个定时任务需要多线程执行,执行时间较久且每天只跑一次,想单独拉出一个线程池和其他业务隔离开,交给spring会导致核心线程一直存在 浪费线程资源,因此想单独拉一个池子用完就丢,原本想的是,在 ...
- FDR校正
一.假设检验 假设检验的基本思路是: 设立零假设(null hypothesis)H0,以及与零假设H0相对应的非零假设(alternative hypothesis)H1,在假设H0成立的前提下,计 ...
- 16_Android的数据存储_ SharedPreference、XML和JSON
1. Android读写首选项 1.1 SharedPreferences SharedPreferences 是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对数据,通常 ...
- 我与UML相爱相杀的狗血日常
前言 该怎么说呢,在专业母亲的包办婚姻和我不得不为日后的百万家产[日后的百万年薪,我怕是在做梦]下,我和UML的婚后生活正式开始了.第一天回娘家我亓老师就给出了她最爱的编程作业.说实话,我当初以头发为 ...
- 20200520_windows2012安装python和django环境
http://httpd.apache.org/download.cgi#apache24 配置文件修改后, 记得去阿里云开放端口 ServerName 172.18.196.189:9080 →不能 ...
- hi-nginx-java的无配置路由配置
hi-nginx-java既可以通过实现hi.servlet抽象来像Flask那样快速配置路由,例如: 1 hi.route r = hi.route.get_instance(); 2 r.get( ...
- PyQt(Python+Qt)学习随笔:QAbstractItemView的textElideMode属性
老猿Python博文目录 老猿Python博客地址 一.概述 textElideMode属性用于控制省略文本中省略号"-"的位置,当项的内容过多视图无法显示完整时会显示部分内容,并 ...
- msfvenom命令自动补全工具下载=>msfvenom-zsh-completion
msfvenom参数和命令很多,各种payload和encoder经常让⼈眼花缭乱,特别是对英语不好的⼈来说有些命令可能很容易忘记. 所以 Green_m 开发了⼀个zsh插件,可以⾃动化的补全msf ...
- IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
同一个工程文件,选择103F3可以编译通过,但是选择103K3便提示空间不足 百思不得其解,查阅大量资料无果.最后在IAR工程里面找到了配置文件 打开003f3的配置文件和003K3配置文件进行对比, ...
- CF1400G - Mercenaries
1400G - Mercenaries 考场上想到枚举,但是只想到了 \(2 ^ m\) 枚举矛盾,然后用 NOI Online 2 游戏 类似的容斥掉,结果式子推着推着就复杂度爆了 wtcl. (U ...