MySQL中type字段解析

文章目录

      • [1. system & const (最快)](#1. system & const (最快))
      • [2. eq_ref (极快)](#2. eq_ref (极快))
      • [3. ref (快)](#3. ref (快))
      • [4. range (较快)](#4. range (较快))
      • [5. index (慢)](#5. index (慢))
      • [6. ALL (最慢)](#6. ALL (最慢))
      • [💡 核心区别总结](#💡 核心区别总结)

记录一下我经常忘记的Type字段

EXPLAIN 的结果中,type 字段代表的是访问类型(Access Type),即 MySQL 决定如何查找表中的行。这是判断查询性能最直观的指标。

按照从好到差 的顺序,常用的 type 取值如下:


1. system & const (最快)

  • system :表只有一行(等于系统表),这是 const 类型的特例。
  • const :通过索引一次就找到了。通常出现在使用**主键(primary key) 唯一索引(unique index)**与常量进行等值比较时。
    • 示例: SELECT * FROM users WHERE id = 1;

2. eq_ref (极快)

  • 通常出现在多表连接 中,连接条件使用的是主键或唯一索引。对于前一张表的每一行,在当前表中只有一行匹配。
    • 示例: SELECT * FROM a JOIN b ON a.id = b.a_id;(假设 b.a_id 是唯一索引)

3. ref (快)

  • 使用的是非唯一性索引 (普通索引)或者联合索引的前缀扫描。可能会找到多行符合条件的记录。
    • 示例: SELECT * FROM users WHERE age = 25;age 是普通索引)

4. range (较快)

  • 范围扫描 。利用索引检索给定范围内的行。
    • 特征: 只要 WHERE 子句中出现了 BETWEEN, >, <, in, or 等,且该列有索引,通常就是 range

5. index (慢)

  • Full Index Scan 。虽然也扫了索引,但它扫描了索引树的所有叶子节点。这通常比全表扫描快一点点,因为它不用去读数据行(通常伴随 Extra: Using index)。

6. ALL (最慢)

  • Full Table Scan 。全表扫描,MySQL 遍历整个表来查找匹配的行。
    • 评价: 数据量大时是灾难,必须优化。

💡 核心区别总结

system > const > eq_ref > ref > range > index > ALL

一般来说,生产环境的查询至少要达到 range 级别,最好能达到 ref

相关推荐
小白男神1 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs19911 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_962218611 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客1 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安1 天前
MySQL-触发器
数据库·mysql