Mysql查看执行计划
EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
EXPLAIN + sql语句可以查看mysql的执行计划。

其中:
id:
1、是一组数字,表示查询中执行select子句或操作表的顺序。
2、如果id相同,则执行顺序从上至下。
3、如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行。
4、所有组中,id越大,优先级越高,越容易执行。
select_type:(表示查询中每个select子句的类型(简单OR复杂),有以下几种)有simple,primary,subquery,derived(衍生),union,unionresult。
1、SIMPLE:查询中不包含子查询或者UNION
2、PRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY。
3、SUBQUERY:在SELECT或WHERE列表中包含了子查询,该子查询被标记为SUBQUERY。
4、DERIVED:在FROM列表中包含的子查询被标记为DERIVED(衍生)。
5、UNION:若第二个SELECT出现在UNION之后,则被标记为UNION;
6、derived:若union在from子句的子查询中,外层的select被标记成derived。
7、union result:从union表获取结果的select被标记成union result。
table:显示这一行的数据是关于哪张表的
type:(表示MySQL在表中找到所需行的方式,又称“访问类型”,常见有以下几种all,index,range,ref,eq_ref,const,system,NULL)
ALL:Full Table Scan, MySQL将进行全表扫描。
index:full index scan,index与ALL区别为index类型只遍历索引树。
range:range Index Scan,对索引的扫描开始于某一点,返回匹配值域的行,常见于between、<、>等的查询;
ref:非唯一性索引扫描,返回匹配摸个单独值的所有行。常见于使用非唯一索引或唯一索引的非唯一前缀进行的查找;
eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
const、system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量
NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引
possiblekeys:
2种意思:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
possiblekey表示能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引被列出,但不一定被查询使用。
key:
1、key表示查询时使用的索引。若查询中使用了覆盖索引,则该索引仅出现在key中举个例子
employee中gender上有一个索引。使用如下语句
EXPLAIN SELECT gender from employees
则结果如下:1 SIMPLE employees index IND_GEN 1 300695 Using index
EXPLAIN SELECT first_name from employees
则结果如下 1 SIMPLE employees ALL 300695
keylen:
keylen表示索引所使用的字节数,可以通过该列结算查询中使用的索引长度
ref:
ref表示上述表的链接匹配条件,即哪些列或常量可被用于查找索引列上的值。
rows:
rows表示根据mysql表统计信息及索引选用情况,估算找到所需记录要读取的行数。
extra:
extra表示不在其他列并且也很重要的额外信息。
using index表示在相应的select中使用了覆盖索引。
usingwhere表示存储引擎搜到记录后进行了后过滤(POST-FILTER),如果查询未能使用索引,usingwhere的作用只是提醒我们mysql要用where条件过滤z结果集。
using temporay表示用临时表来存储结果集,常见于排序和分组查询。
usingfilesort,mysql中无法用索引完成的排序成为文件排序。
关于覆盖索引的一些概念如下:
MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index) 如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降
mysq的执行计划有一定局限性直接引用了
•EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况
•EXPLAIN不考虑各种Cache
•部分统计信息是估算的,并非精确值
•EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划
Mysql查看执行计划的更多相关文章
- Mysql查看执行计划-explain
最近生产环境有一些查询较慢,需要优化,于是先进行业务确认查询条件是否可以优化,不行再进行sql优化,于是学习了下Mysql查看执行计划. 语法 explain <sql语句> 例如: e ...
- MySQL 查看执行计划
MySQL 使用 explain + sql 语句查看 执行计划,该执行计划不一定完全正确但是可以参考. EXPLAIN SELECT * FROM user WHERE nid = 3; selec ...
- mysql查看执行计划重构后的查询
MYSQL优化器会对客服端发送的SQL语句进行优化,优化后的SQL语句再被MYSQL执行.然后我们在优化SQL的时候,怎么获取到MYSQL优化后执行语句呢. EXPLAIN select * from ...
- mysql explain extended 查看 执行计划
本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 1. explain 可以查看 ...
- MySQL 使用explain查看执行计划
使用explain查看执行计划, 下面是针对这两条语句进行分析,其查询结果是一样的. EXPLAIN select n.id,n.title from info n inner join info_t ...
- MYSQL EXPLAIN执行计划命令详解(支持更新中)
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是根据官网中的每个一点来翻译.举例.验证的:英语不好,所 ...
- hive高阶1--sql和hive语句执行顺序、explain查看执行计划、group by生成MR
hive语句执行顺序 msyql语句执行顺序 代码写的顺序: select ... from... where.... group by... having... order by.. 或者 from ...
- mysql sql执行计划
查看Mysql执行计划 使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show pro ...
- Mysql explain执行计划
EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...
随机推荐
- Oracle问题解决(远程登录失败)
远程机: 安装 Oracle 的计算机: 本地机: 访问远程机 Oracle 的计算机. 一.问题描述 远程机安装 Oracle 成功. 本地机配置 InstantClient 后, PLSql De ...
- HBase eclipse开发环境搭建
伪分布式环境安装 事先本机必须部署好了伪分布式hadoop开发环境将Hbase/lib下的 hadoop-core-*.jar 与 hadoop保持一致. 将hadoop下的复制到hbase下将had ...
- check sql server edition (version 版本)
SELECT @@VERSION refer : https://www.mssqltips.com/sqlservertip/1140/how-to-tell-what-sql-server-ver ...
- Rundeck,RUN起来!!
零晨一点, 还好,跑起来了.. 满满的英文文档,肿么办?? 拿下!
- JAVA存取对象属性时,如果开程多线程,记得对相关存取方法作原子化操作定义
最显著的应用当然是银行存款和取款,不要存在存取数字和实际发生不一样的情况. synchronized关键字. class BankAccount { private int balance = 100 ...
- 如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件
有网友碰到过这样的问题:如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件,问题详细内容为: 如何用正则匹配后缀名不为.jpg, .css, .js, ...
- 【HDOJ】3419 The Three Groups
记忆化搜索. /* 3419 */ #include <cstdio> #include <cstring> #include <cstdlib> #define ...
- MPI Maelstrom(Dijkstra)
http://poj.org/problem?id=1502 刷一道模板题稳定一下心情... Dijkstra求单源最短路,就是输入的时候注意下,是按下三角输入的(无向图),输入字符x表示i与j不通. ...
- UNITY3D ShadeSH9
UNITY3D ShadeSH9 属于Irradiance environment maps 方法,可以参考DX SDK PRTDemo,里面是几乎相同的实现,总之就是解光传输的积分方程 目前主流辐射 ...
- 动态规划——I 记忆化搜索
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...