MySQL 学习笔记3.1 SQL优化之explain的使用及介绍

explain的介绍

使用explain关键字可以模拟SQL优化器执行SQL查询语句,
功能:让程序员了解MySQL是如何处理传入的SQL语句的,分析SQL语句或是表结构是否存在性能瓶颈
使用方式: explain  + SQL语句
结果字段:(MySQL 8.0版本各字段)
在这里插入图片描述
字段解释

  • id:分为三种情况:
    id相同:加载表顺序为从上到下
    id不同:id值越大,优先级越高,越先被执行。
    id也有相同也有不同:id相同的为一组,从上到下顺序执行;在所有的组中,id值越大,优先级越高,越先被执行。
  • select_type:查询语句的类型
    simple:简单查询
    primary:查询中若包含子查询,最外层查询被标记为primary
    subquery:子查询
    derived:临时表(衍生),在from列表中包含的子查询被标记
    union:union之后的查询语句被标记
  • table:查询的表名
  • partitions:
  • type*:访问类型
    从最好到最坏其次为(*表示重点掌握)
    system *> const *> eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range(尽量保证) > index > ALL *
    system 表示表只有一行记录
    const 表示通过索引一次就找到了
    eq_ref 表示唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。
    ref 表示非唯一性索引扫描,返回匹配某个单独值的所有行。
    range 表示只检索给定范围的行,即只需要开始于索引的某一点,而结束语另一点,不用扫描全部索引。
    index 表示遍历索引树 all 表示遍历全表,区别在于index从索引中读取,而all是从硬盘上读取。
  • possible_keys:显示可能会用到的索引,一个或多个,但实际上不一定会用到
  • key:实际上用到的索引
  • key_len:索引中使用到的字节数,即索引的长度
  • ref:哪些列或常量被用于查找索引列上的值
  • rows:执行查询时必须检查的行数,越少越好
  • filtered:按照条件过滤行占比
  • Extra:包含不适合在其他列中显示但十分重要的额外信息,例如:
  1. Using filesort,说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称为“文件排序”,需要优化
  2. Using temporary,在对查询结果排序时使用临时表,需要优化
  3. USING index,表示相应的select操作中使用了覆盖索引,避免访问了表的数据行,效率不错!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值