当前位置: 首页 > news >正文

mysql explain使用

文章目录

  • type 访问类型
    • 性能高到低
    • 多注意
    • type: index 出现的场景
  • key 实际使用的索引
  • Extra 额外信息
  • 其他字段

通过 EXPLAIN 你可以知道:如是否使用索引、扫描多少行、是否需要排序或临时表

EXPLAIN 三板斧(type、key、Extra)

例子:

explain select * from user where 'name' = '小明'

type 访问类型

性能高到低

表示 MySQL 是如何查找表中的数据,怎么做数据检索的,是查询性能的关键指标

性能从高到低排序:

system > const > eq_ref > ref > range > index > ALL
  • system:表仅有一行数据(系统表或单行表),这是 const 的特例
  • const:通过主键或唯一索引查找,且查询条件是常量,性能极高,因为直接定位到单行数据
  • eq_ref:在多表连接(JOIN)中,通过主键或唯一索引进行等值匹配,每行只匹配一行数据,性能非常高,逐行精确匹配
  • ref:表示使用了非唯一的索引(普通索引),或者唯一索引的前缀进行等值匹配
  • range:通过索引进行范围扫描,返回符合条件的行(如 BETWEEN、>、< 等),性能中等,优于全表扫描但不如等值匹配
  • index:进行了全索引扫描,扫描整个索引树而不是表数据。只遍历索引树,不访问数据文件。
  • all:表示全表扫描,未使用索引

多注意

type 如果是从 range 以及一下就需要多留意关注了

type: index 出现的场景

  • 查询字段完全被索引覆盖
  • 复合索引覆盖查询字段和条件

key 实际使用的索引

key 会显示你使用的索引名

如果没用索引,那么这里会显示 NULL

Extra 额外信息

Using index: 表示使用了 覆盖索引(Covering Index),即查询的所有字段都在索引中,无需回表(性能最佳)

Using where: 表示存储引擎返回数据后,MySQL 服务器层需要再次过滤数据(可能需优化)

Using filesort: 表示需要文件排序(性能较差,需避免)

Using temporary: 表示需要创建临时表(性能差,需优化)

其他字段

select_type:查询的类型或复杂性,描述查询的结构(如简单查询、子查询、联合查询等)
possible_keys:查询可能使用的索引列表(可能,但不一定实际使用)
ref:显示索引的哪一列被使用,以及与之比较的值(如常量、列名),const,表示使用了等值匹配
rows:MySQL 估计需要扫描的数据行数(估算值),注意不是扫描是索引树中的数据条数
filtered:剩余满足查询条件的记录百分比

相关文章:

  • 基于springboot的校园商铺管理系统的设计与实现
  • HikariCP连接池使用和源码分析
  • NB-IoT NPUSCH(三)-资源映射
  • 一种C# 的SM4 的 加解密的实现,一般用于医疗或者支付
  • 多线程(1)
  • ODSA架构与操作-1
  • 2025最新Gemini 2.5 Pro API限制全面解析:最完整的使用指南与优化方案
  • 做好测试用例设计工作的关键是什么?
  • 仓颉入门:特性
  • 嵌入式自学第二十九天(5.27)
  • DFS入门刷题c++
  • AI 智能体的那些事—架构设计关键点
  • 数据库管理与高可用-MySQL数据库初体验
  • Java 内存模型与 volatile 关键字深度解析:从可见性到指令重排
  • 【键盘说明书备份】ENERGYFORT
  • 什么是舵机,如何控制舵机
  • LVGL(Grid)
  • 用Qt/C++玩转观察者模式:一个会聊天的设计模式
  • Baklib企业CMS实现内容智能归档与精准检索
  • 红黑树,B树,二叉树之间的不同
  • 空壳主体接入网站/百度收录什么意思
  • 佛山网站推广建设/黑帽seo培训网
  • 阿里云服务器 多个网站/网站建设加推广优化
  • 本机做web打开网站无法显示网站/怎么推广app让人去下载
  • 商品网站建设及推广策划书/网络推广宣传方式
  • 某互联网公司触屏网站/页面优化算法