您现在的位置是:首页 > 文章 > MySQL优化之explain关键字学习笔记 网站文章

MySQL优化之explain关键字学习笔记

孙玉超 2020-07-22 09:35:23 0 评论 851 浏览 0 收藏 0


explain查询所包含的列


当我们用 explain 关键字分析一条SQL的时候,会出现以下10列。那么分别代表什么意思呢?

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra

分别查看每一列的含义


id


id相同的情况下,从上往下依次顺序执行。id不同的情况下,id越大表示优先级越高,越先执行。


如上图,id为 4 所代表的 table 高于 id 为 1,2,3 的先执行,同时有三个 id 为 4 的 table 。这三个 table 顺序执行。 


select_type



table


数据来自哪张表,注意有些是衍生表。


type


表示当前表的访问类型。通常常见的有以下几种。从上到下性能逐渐降低,大多数情况下应该避免查询访问类型为 ALL。

type含义举例
const表示通过索引一次就找到了,const 用于在 where 条件中比较 primary key 或者 unique 索引
eq_ref唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常见于主键或唯一索引扫描一般在join联查时,对于关联字段,table2都只有唯一一条数据匹配
ref非唯一性索引扫描,与eq_ref不同的是,返回匹配关联字段值得所有行,这意味着关联表匹配的数据可能不止一行一般在join联查时,对于关联字段,table2都会有多条数据匹配,例如订单表和订单item表
range使用索引检索给定范围的行,一般where条件中出现 < 、 > 、between and 等
index表示扫描整个索引树select order_id from order
ALL全表扫描。遍历整张表数据文件select * from order

possible_keys 、 key 、key_len


possible_keys 表示可能用到的哪些索引,key 表示实际上用到了哪些索引。key_len 表示索引长度或者说所占字节大小,有自己的计算规则。

ref 、rows


ref :显示索引的哪一列被使用了。rows :表示这次访问大致扫描了多少行数据。


Extra


MySQL 认为这一列的信息不应该放在其他列中,但是又非常重要。所以称为额外信息



待完善

转载请注明出处:转载请注明出处

上一篇 : 一道难倒大部分程序员的String面试题 下一篇 : MyBatis.xml文件中写法笔记记录

留言评论

所有回复

暮色妖娆丶

96年草根站长,2019年7月接触互联网踏入Java开发岗位,喜欢前后端技术。对技术有强烈的渴望,2019年11月正式上线自己的个人博客