Mysql-Explain参数详解(尚硅谷-周阳)

系统在某些时刻存在响应缓慢,开启了慢查询,发现有许多查询缓慢的SQL,

这里想着优化一下查询,奈何技术不扎实,花了些时间系统学习了下SQL调优基本分析,这里记录一下。参考B站周阳-https://www.bilibili.com/video/BV1KW411u7vy?p=46&t=8

 

哪些情况下适合建立索引

Mysql-Explain参数详解(尚硅谷-周阳)

 

 

 哪些情况不要创建索引

Mysql-Explain参数详解(尚硅谷-周阳)

 

 Explain

Mysql-Explain参数详解(尚硅谷-周阳)

 

   id:select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序  

Mysql-Explain参数详解(尚硅谷-周阳)

 

 

   select_type:查询的类型,主要用于区别普通查询、联合查询、子查询等复杂查询    

Mysql-Explain参数详解(尚硅谷-周阳)

 

    type:访问类型排列,显示查询使用了何种类型

  1. type显示的是访问类型,是较为重要的一个指标,结果值从最好到最坏依次是:system>const>eq_ref>ref>fultext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL
  2. 挑重要的来说:system>const>eq_ref>ref>range>index>ALL,一般来说,得保证查询至少达到range级别,最好能达到ref。

  Mysql-Explain参数详解(尚硅谷-周阳)

 

 Mysql-Explain参数详解(尚硅谷-周阳)

 

 Mysql-Explain参数详解(尚硅谷-周阳)

 

   possible_keys 

  

  1. 显示可能应用在这张表中的索引,一个或多个
  2. 若查询涉及的字段上存在索引,则该索引将被列出,但不一定被查询实际使用

  key

  

  1. 实际使用的索引,如果为null,则没有使用索引

  2. 若查询中使用了覆盖索引,则该索引仅出现在key列表中

  ref

  

  1. 显示索引哪一列被使用了,如果可能的话,最好是一个常数。哪些列或常量被用于查找索引列上的值
  2. 由key_len可知t1表的索引idx_col1_col2被充分使用,t1表的col1匹配t2表的col1,t1表的col2匹配了一个常量,即’ac’

  rows

  根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数

 

  Extra:

  包含不适合在其他列中显示但十分重要的额外信息

  Mysql-Explain参数详解(尚硅谷-周阳)

 

 Mysql-Explain参数详解(尚硅谷-周阳)

 

 Mysql-Explain参数详解(尚硅谷-周阳)

 

 Mysql-Explain参数详解(尚硅谷-周阳)

 

上一篇:Dbeaver如何看Oralce执行计划?解决: explain plan FOR 无效? 执行计划的顺序怎么查看?


下一篇:【mysql 5.7】Explain工具介绍-笔记