Mysql 性能分析工具Explain(解释)

一、这吊毛的出身

sql性能优化方向利器,他会显示出每条sql 执行状况,基本上要看你的sql是否走索引,以及索引优化索引他必不可少!

 

二、使用方式

1.使用navicat等可视化工具

 

2.在sql语句上面加上:explain

 

三、展示内容详解

1.id:代表实在mysql内部加载的顺序

  加载规则:

  • id 相同的从上往下顺序执行
  • id 不同的 较大的先执行

 

2.select_type:代表此条语句的查询的类型

  1. SIMPLE(小写:simple)            : 简单的select查询,查询中不包含子查询或者UNION
  2. PRIMARY(小写:primary)        :查询中包含复杂的子部分,最外层则会被标记
  3. SUBQUERY(小写:subquery) :在select或者 where 列表中包含了子查询
  4. DERIVED(小写:derived)        :在from列表中包含的子查询会被标记为DERIVED(衍生)
  5. UNION(小写:union)               :若第二个select出现在UNION后,则会被标记为UNION,若UNION包含在FROM子句的子查询中,外层的select 将为被标记为:DERIVED
  6. UNION RESULT(小写:union result):从UNION表中获取结果的SELECT

 

3.table:是关于那张表的

 

4.type:访问类型

有如下几种情况

从好到坏

system -> const -> eq_ref -> ref  -> range  -> index -> all

100w以上的数据 一般优化到 range or ref

  • system:只有一条记录,这种情况太少了
  • const:扫描了索引,一次就完成
  • qe_ref:使用的唯一索引进行扫描
  • ref:非唯一性的索引扫描,返回多行
  • range:使用了between and 之类的范围语句缩小查询数量
  • index:遍历了索引树

5.possible_key:预计使用到的索引键

 

6.key:事件使用的索引键

 

7.ref:那些值被用于索引列的查找

 

8.rows:共查询多少行

 

9.extra:额外的说明,举例:

  1. using filesort 出现这个说明mysql引用自己的排序,也就是没有按照索引来
  2. using temprary 出现这个说明mysql先创建了一张临时表,然后再在这个临时表里操作,再删除这个表,性能较差
  3. using index 使用了索引,性能不错

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值