【数据库】mysql执行计划
目录
执行计划参数与解释
1.id 表示SQL执行顺序
2.select_type 表示查询中每个select子句的类型
1.SIMPLE
2.PRIMARY
3.SUBQUERY
4.DERIVED
5.UNION
6.UNION RESULT
3.table 显示这一步所访问的表名称
4.type 对表的访问方式
1.ALL
2.index
3.range
4.ref
5.eq_ref
6.const
7.system
5.possible_keys 列出涉及到的字段上存在的索引
6.key 实际使用的索引
7.key_len 表示索引使用的字节数,根据这个只可以判断索引的使用情况
8.ref 显示索引的哪一列被使用了
9.rows 找到所需记录所需要的行数
10.extra 对查询所获的结果集排序的结果
using filesort
using index
using tempporary
using where
mysql执行计划就是解释当mysql执行查询语句的时候是如何在数据库中执行的、相关表是如何连接的、连接次序、有哪些索引和索引的具体使用情况、每个表的扫描数据量等等
可以通过这些数据来分析selelct语句的执行情况,从而对select语句进行优化
用法
explain +语句
执行计划参数与解释
我们可以看到参数有id,select_type,table,partition,type,possible_keys,key,key_len,ref,rows,filtered,Extra参数
1.id 表示SQL执行顺序
表示SQL执行的顺序,具体是根据一下规则
当id相同时,执行顺序由上至下
如果是子查询,id的序号会递增,id的值越大执行优先级越高,越先被执行
2.select_type 表示查询中每个select子句的类型
主要作用是区分普通查询、联合查询、子查询等复杂查询
1.SIMPLE
简单的select查询,查询中不包含子查询或者union
2.PRIMARY
查询中包含然和复杂的字部分嘴歪成查询则被标记为primary(嵌套查询的外部)
3.SUBQUERY
在select或where列表中包含了子查询
4.DERIVED
在from列表中包含子查询被标记为derived(衍生),mysql或递归执行这些子查询,将结果放在临时表里
5.UNION
若第二个select出现在union之后,则被标记为union,若union宝还在from子句的子查询中,外层select将被标记为drived
6.UNION RESULT
从union表获取结果的select
3.table 显示这一步所访问的表名称
4.type 对表的访问方式
常用的类型有:ALL、index、range、ref、eq_ref、const、system(从左到右,性能从差到好)
1.ALL
MySQL将遍历全表以找到匹配的行(遍历所有的记录)
2.index
index与ALL区别为index类型只遍历索引树(遍历所有的索引)
3.range
只检索给定范围内的行,使用一个索引来选择行(between,>,<)(可能使用多个索引)
4.ref
表示非唯一索引扫描,返回所有匹配的值(仅用一个索引,并且可能会回表)
5.eq_ref
类似ref,区别就在于使用的索引是唯一索引,对于每个索引的值,表中只有一条记录匹配(使用primary key或者unique key作为关联条件)(仅用一个索引,并且可能会回表)
6.const
通过索引一次命中,匹配一行数据(也就是说通过索引一次就找到了又且仅有一条的数据)
7.system
表中只有一行记录,相当于系统表(也就是说这个表里只有一条数据,一次就找到了数据)
5.possible_keys 列出涉及到的字段上存在的索引
查询涉及到的字段上存在的索引,索引将会被列出,但是不一定被查询实际使用
6.key 实际使用的索引
如果为NULL,则没有使用索引
7.key_len 表示索引使用的字节数,根据这个只可以判断索引的使用情况
表示用到所有的索引的字节数之和(?),key_len越小,说明索引效果越好
8.ref 显示索引的哪一列被使用了
如果可能,是一个常量const
9.rows 找到所需记录所需要的行数
10.extra 对查询所获的结果集排序的结果
using filesort
表示mysql对结果集进行外部排序,不能通过索引顺序达到排序效果,一般有的话都建议优化去掉,因为这样的查询对cou资源消耗大,延时大(不根据索引排序)
using index
覆盖索引扫描,表示查询在索引树中就可以查找所需数据,不用扫描表数据文件,往往说明性能不错(根据索引就能排序)
using tempporary
查询有使用临时表,一般出现于排序,分组和多表join的情况,查询效率不高,建议优化(使用临时表)
using where
sql使用了where过滤,效率较高
参考文章
MySQL中SQL执行计划,你理解了吗?
膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibili
MySQL Explain详解 - 杰克思勒(Jacksile) - 博客园
mysql的sql执行计划详解_360linker-CSDN博客_sql执行计划详解
【数据库】mysql执行计划相关推荐
- [数据库] ------ mysql 执行计划
mysql 执行计划 简单来说,mysql整体架构分为三块:应用层,逻辑层,物理层 应用层:负责与客户端交互,建立连接,返回数据,响应请求. 逻辑层:负责查询处理,事务管理等 物理层:实际物理磁盘上存 ...
- 来来来!一次搞定各种数据库 SQL 执行计划:MySQL、Oracle
执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等.如果 SQL 语句性能 ...
- mysql 执行计划 什么用_简述MySQL的执行计划的作用及使用方法
作为程序员,难免要和数据库打交道,一般情况下,我们不是DBA ,但是又要写很多SQL,因此SQL效率就成了很大的问题.关于SQL效率优化,除了要掌握一定优化技巧外, 还得有很多经验的积累,但是这里我们 ...
- 一次搞定各种数据库SQL执行计划
作者 | 董旭阳TonyDong 出品 | CSDN 博客 执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫描访问表中的数 ...
- MySQL执行计划 EXPLAIN参数
MySQL执行计划参数详解 转http://www.jianshu.com/p/7134286b3a09 MySQL数据库中,在SELECT查询语句前边加上"EXPLAIN"或者& ...
- 入门mysql执行计划
执行计划是什么? 执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景.在MySQL使用 explain 关键字来查看SQL的执行计划.如下所示: //1. 查 ...
- Mysql执行计划2
文章 覆盖索引 Using where 与 using join buffer impossible where SQL 优化 策略 1.尽量全值匹配 策略 2.最佳左前缀法则 策略 3.不在索引列上 ...
- 十、Mysql执行计划详细解析
Mysql执行计划详细解析 执行计划 什么是执行计划 执行计划的作用 执行计划的语法 执行计划详解 ID 列 Id 相同 Id 不同 Id 相同又不同 select_type 列 SIMPLE PRI ...
- MySQL执行计划(MySQL调优的重要利器)
文章目录 看完本篇文章你能学到什么? 一.MySQL执行计划 1.1 id字段 1.2 select_type 字段 1.3 table 字段 1.4 partitions 字段 1.5 type字段 ...
最新文章
- Tomcat版本不同,功能区别也是很大!
- Qt+Phonon的另一种选择
- Anaconda安装Python,提示Python不是内部或外部命令解决方法
- Android为TV端助力 最详细的动画大全,包括如何在代码和在XML中使用
- Skype for Business Server 2015-03-后端服务器-1-安装
- Node响应中文时解决乱码问题
- AWK再次认识--内置的参数,以及编写脚本
- python中的下标索引
- python显示数据长度_python – 获取CSV的长度以显示进度
- 主流框架的搭建(VUE,React)
- [.net]c#登陆实现验证码-图形编程
- JavaBean递归拷贝工具类Dozer
- Javascript:基础语法
- 算法学习(四)——alphago模型
- 生产排程系统_APS(高级计划排产)系统该如何选型,主要从哪些方面考虑?
- java 打印字间距 行距_[图片问答]LODOP打印的行间距字间距
- 典型相关性分析(清风建模学习笔记)
- 每日英语:China's Red Cross Tries to Rebuild After Self-Inflicted Disaster
- 为什么建模要尽量用四边面?如何将三边面转化成四边面?
- Opencv convertScaleAbs函数 和灰度图上进行透明彩色绘制