当前位置:网站首页>MySQL EXPLAIN 性能分析工具详解
MySQL EXPLAIN 性能分析工具详解
2022-08-03 05:11:00 【张童瑶】
EXPLAIN是干什么用的?
EXPLAIN是MySQL的一个性能分析工具,分析SQL性能,可以知道这个SQL有没有优化的空间,这个SQL目前运行的一个性能级别,用了哪些索引,这就是EXPLAIN的作用。
语法格式
EXPLAIN SELECT * FROM `sys_user`
执行结果
结果字段详解:
结果字段 | 详解 |
---|---|
id | 在多个查询SQL过程中用来查询SQL语句的执行顺序,最大值优先最高 |
select_type | 主要是用于区别查询的类型,1、SIMPLE(简单select查询,查询中不包含子查询或者UNION);2、PRIMARY(只是在有子查询的语句中最外面的SELECT,主查询);3、SUBQUERY(在SELECT或WHERE列表中包含了子查询);4、DERIVED(在FROM列表中包含的子查询被标记为DERIVED(衍生)MySQL会递归执行这些子查询,把结果放在临时表里);5、UNION(若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM字句的子查询中,外层SELECT将被标记为DERIVED);6、UNION RESULT(从UNION表获取结果的SELECT) |
table | 显示这一行的数据是关于哪张表的 |
partitions | 分区,暂时不用,感兴趣可以了解一下 |
type | 显示使用了性能级别(重要) ;级别从最好到最差以此顺序为:system>const>eq_ref>ref>range>index>ALL,一般来说,得保证查询达到range级别,最好能达到ref;1、system:表仅有一行(=系统表),这是const联接类型的一个特例;2、const:表最多有一个匹配行,它将在在巡开始时被读取。因为仅有一行,const表很快,因为它们只读取以一次(作者大白话:其实就是速度很快,很难达到这个级别);3、eq_ref:唯一性索引扫描,对于每个索引建,表中只有一条记录与匹配。常见于主键或唯一索引扫描(作者大白话:性能仅次于const,基本上也不用优化);4、ref:非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而他可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体(作者大白话:就是非唯一性索引);5、range:只检索给定范围的行,使用一个索引来选择行,key列显示使用了哪个索引一般就是在你的where语句中出现了between、<、>、in等的查询这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引;6、index:通常比ALL快,就是遍历索引,就是用了索引会出现这个级别(作者批注:其实你的SQL达到这个index级别就已经很不错了);7、ALL:全表扫描,也是最慢的 |
possible_keys | 这行SQL可能用到的索引 |
key | 这行SQL实际用的索引 |
key_len | 索引的长度,数值越小越好 |
ref | 显示那个索引列被使用了 |
rows | 表查询数据 |
filtered | 显示出来的行,根索引条数的一个百分比 |
Extra | 1、Using filesort:文件排序,需要对SQL优化;2、Using temporary:产生临时表,厂家于排序order by 和分组查询group by,需要考虑一下优化了;3、Using index:效率不错,无需优化 |
祝大家都能成为SQL优化大神
ok,我话说完
我的其他文章
我的网站
边栏推荐
- 用pulp库解决运输问题【详细】
- ModelArts第二次培训
- Flask Web 报错:
- Install IIS services (Internet Information Services (Internet Information Services, abbreviated IIS, Internet Information Services)
- Presto installation and deployment tutorial
- Exception (abnormal) and Error (error) difference analysis
- 1079 延迟的回文数 (20 分)
- 一维数组和二维数组的命名以及存储空间
- 背压机制
- js实现一个 bind 函数
猜你喜欢
随机推荐
Makefile 遍历子目录模板
【数组】arr,&arr,arr+1,&arr+1以及内存单元的占用
-最高分-
-寻找鞍点-
1.ROS环境搭建与基础工作
2. 两数相加
初步认识ZK
一维数组和二维数组的命名以及存储空间
业务表解析-余额系统
【编程学习新起点】记录写博客的第一天
2022暑假牛客多校联赛第一场
-钞票兑换-
Tag stack - stack monotonically preparatory knowledge - lt. 739. The daily temperature
JS学习笔记(三)
阿里云对象存储oss私有桶生成链接
NotImplementedError: file structure not yet supported
求因子数量
web安全-sql注入漏洞
飞机大战完整版
JDBC与连接池