海风影像馆 海风影像馆
首页
扎根医疗
学习笔记
技术实战
项目管理
影像空间
驴行天下
阳明心学
  • 学习方法
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档

知行旅人

生有热烈,藏于俗常。
首页
扎根医疗
学习笔记
技术实战
项目管理
影像空间
驴行天下
阳明心学
  • 学习方法
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 数据结构

  • 算法

  • Java基础

  • Java并发

  • JVM

  • 开发框架

  • 持久化

    • MySQL

      • MySQL数据同步
    • Tablestore

    • 数据库设计三大范式
    • 执行计划Explain
      • 1 type列
      • 2 possible_keys列
      • 3 key列
      • 4 key_len列
      • 5 rows列
    • 索引
    • 事务
    • 数据库锁
    • ElasticSearch基础
    • ElasticSearch杂记
  • 缓存

  • 消息中间件

  • 微服务

  • 系统架构

  • 网络

  • 操作系统

  • 学习笔记
  • 持久化
zhixinglvren
2022-05-07
目录

执行计划Explain

# 1 type列

表示关联类型或访问类型,即MySQL决定如何查找表中的行

依次从最优到最差分别为 : system > const > eq_ref > ref > range > index > ALL

一般来说,得保证查询达到range级别,最好达到ref

system:表中只有一条数据,这个类型是特殊的const类型

const:针对主键或唯一索引的等值查询扫描,最多只返回一行数据,const查询速度非常快,因为它仅仅读取一次即可。

eq_ref:此类型通常出现在多表的join查询,表示对于前表的每个结果,都只匹配到后表的一行结果,并且查询的比较操作通常是=,查询效率高。这可能是在 const 之外最好的联接类型了,简单的 select 查询不会出现这种 type。什么情况下结果集只有一个呢!那便是使用了主键或者唯一性索引进行查找的情况

ref:相比 eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要和某个值相比较,可能会找到多个符合条件的行。

range:范围扫描通常出现在 in(), between ,> ,<, >= 等操作中。使用一个索引来检索给定范围的行。

index:表示全索引扫描(full index scan),和ALL类型类似,只不过ALL类型是全表扫描,而index类型则仅仅扫描所有的索引,而不扫描数据。通常比ALL快一些。

all:表示全表扫描,这个类型的查询是性能最差的查询之一,通常来说,我们的查询不应该出现ALL类型的查询,因为这样的查询在数据量大的情况下,对数据库的性能是巨大的灾难,一般可以用索引来避免

# 2 possible_keys列

possible_keys表示mysql在查询时,能够使用到的索引,注意,即使有些索引在possible_keys中出现,但是不表示此索引会真正被Mysql使用到,Mysql在查询时具体使用了哪些索引,由key字段决定。

# 3 key列

此字段是mysql在当前查询时所真正使用到的索引。

# 4 key_len列

表示查询优化器使用了索引的字节数,这个字段可以评估组合索引是否完全被使用,或只有最左部分字段被使用到。根据数据类型所占字节数计算出来。

# 5 rows列

rows也是一个重要的字段,mysql查询优化器根据统计信息,估算SQL要查找到结果集需要扫描读取的数据行数。这个值非常直观显示SQL的效率好坏,原则上rows越少越好。

#数据库
上次更新: 2022/11/24, 17:59:25
数据库设计三大范式
索引

← 数据库设计三大范式 索引→

最近更新
01
Linux常用指令
11-24
02
GitHub高级搜索技巧
11-24
03
散列表
11-09
更多文章>
Theme by Vdoing | Copyright © 2020-2023 知行旅人 | MIT License | 粤ICP备20036515号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式