mysql explain理解
#1.explain中各个名称的解释:
#1.1.id:查询ID
id是一组数字,表示查询中执行select子句或操作表的顺序,如果id相同,则执行顺序从上至下,如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行。
#1.2.select_type:声明类型
常见的六个值:
1.SIMPLE:简单的select查询,查询中不包含子查询或者UNION。
2.PRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为primary。
3.SUBQUERY:在SELECT或WHERE列表中包含了子查询。
4.DERIVED:在FROM列表中包含的子查询被标记为DERIVED(衍生),Mysql会递归执行这些子查询,把结果放在临时表里。
5.UNION:若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM子句的子查询中,外层SELECT将标记为:DERIVED。
6.UNION RESULT:从UNION表获取结果的SELECT。
#1.3.table:引用表
显示的查询表名,如果查询使用了别名,那么这里显示的是别名。
如果不涉及对数据表的操作,那么这显示为null。
如果显示为尖括号括起来的<derived N>就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于这个查询产生。
如果是尖括号括起来的<union M,N>,与<derived N>类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。
#1.4.type:连接类型
依次从好到差:
system > const > eq_ref > ref > range > index > ALL
重点:一般来说,得保证查询至少达到range级别,最好能达到ref级别
system:表只有一行记录(等于系统表),这是const类型的特例,平时不会出现,这个也可以忽略不计。
const:表示通过索引一次就找到了,const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快。如将主键置于where列表中,mysql就能将该查询转换为一个常量。
eq_ref:唯一索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或者唯一索引扫描。
ref:非唯一性索引扫描,返回匹配某个单独值得所有行。本质上也是一种索引访问,它返回所有匹配某个单独值得行,然而,他可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。
range:只检索给定范围的行,使用一个索引来选择行。key例显示使用了哪个索引。一般就是在你的where语句中出现了between、<、>、in等的查询。这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引。
index:Full Index Scan,index和ALL区别为index类型只遍历索引树。这通常比ALL快,因为索引文件通常比数据文件小。(也就是说虽然all和Index都是读全表,但index是从索引中读取的,而all是从硬盘中读的)。
all:Full Table Scan,将遍历全表以找到匹配的行。
#1.5.possible_keys:
#1.6.key:
#1.7.key_len:
#1.8.ref:
#1.9.rows:
#1.10.Extra:
微信扫一扫:关注我个人订阅号“猿小飞”,更多精彩文章在这里及时发布:
mysql explain理解相关推荐
- mysql explain rows理解
在MySQL性能调试中,常常使用EXPLAIN解释MySQL执行计划,从而用来估算性能耗时.其中,rows用来表示在SQL执行过程中会被扫描的行数,该数值越大,意味着需要扫描的行数,相应的耗时更长.但 ...
- Mysql Explain 详解
Mysql Explain 详解 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二. ...
- [转]MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有 ...
- mysql explain insert_MySQL之EXPLAIN 执行计划详解
explain 可以分析 select语句的执行,即 MySQL 的"执行计划. 一.type 列 MySQL 在表里找到所需行的方式.包括(由左至右,由最差到最好):| All | ind ...
- MySQL Explain详解,分析语句为何运行慢
MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语 ...
- MySQL explain结果详解
Mysql Explain 结果详解 语法 explain < SQL statement> 例如: explain select * from t3 where id=3952602; ...
- mysql explain ref const_MySQL EXPLAIN 详解
一 .介绍 EXPLAIN 命令用于SQL语句的查询执行计划.这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做 ...
- mysql explain 的using where 到底是什么意思?
转自mysql explain 的using where 到底是什么意思? - SegmentFault 思否 https://segmentfault.com/q/1010000007000995 ...
- 一文读懂 MySQL Explain 执行计划
一.前言 上周老周的一个好朋友让我出一篇教你读懂 SQL 执行计划,和我另一位读者反馈的面试题如何排查慢 SQL 的强相关,索性先出一篇一文读懂 MySQL Explain 执行计划.Explain ...
最新文章
- [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3
- ucontext-人人都可以实现的简单协程库
- 如何从0到1搭建电商促销系统?
- C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)
- 《系统集成项目管理工程师》必背100个知识点-98大数据的特点
- web工作流管理系统开发之十九 工作流系统的事务处理
- 【Git】git add -A = git add . + git add -u
- 2021年恩阳中学高考成绩查询,巴中市恩阳中学2021年排名
- Linux下如何定位Java进程CPU利用率过高原因
- url、href、src
- 快捷指令 python_快捷指令 pythonista wifi连接上局域网(自动)唤醒主机电脑或投影仪...
- Q104:怎么用ray tracing画基于磨边楔形的“花环(Rosette)”
- java动态代理和Cglib动态代理的区别和使用
- pcie扰码的作用_扰码讲解
- html 引入 svg矢量图,前端可视化——SVG矢量图技术
- crontab一些常用的语法 每天凌晨1点重启一遍
- JavaScript读书笔记-03
- 为什么引入非线性激励函数?
- Unity3D音频的制作
- Long类型的数据转换