MySQL索引类型

MySQL 中常见的索引类型可以从多个角度划分,面试和实战中常考的是 按数据结构分类 和 按功能/逻辑分类。下面给你一个清晰、系统的整理。

一、按数据结构分类(最核心)

索引类型 说明 适用场景

B+Tree 索引 MySQL 默认索引结构,InnoDB 主要使用 等值查询、范围查询、排序、分组

Hash 索引 基于哈希表,等值查询极快 Memory 引擎常用,不支持范围查询

R-Tree 索引 空间索引,用于地理数据 GIS 地理位置

Full-text 索引 全文索引 文本内容搜索

✅ InnoDB 默认使用 B+Tree

二、按逻辑/功能分类(最常被问)

1️⃣ 普通索引(INDEX)

• 最基本的索引

• 无唯一性限制

CREATE INDEX idx_name ON user(name);

2️⃣ 唯一索引(UNIQUE INDEX)

• 索引列值必须唯一

• 允许 NULL(多个 NULL 不算重复)

CREATE UNIQUE INDEX uk_email ON user(email);

✅ 常用于:邮箱、手机号、业务唯一键

3️⃣ 主键索引(PRIMARY KEY)

• 特殊的唯一索引

• 不允许 NULL

• 一张表只能有一个主键

PRIMARY KEY (id)

✅ InnoDB 中主键即聚簇索引

4️⃣ 组合索引(复合索引 / 联合索引)

• 多个列组成的索引

• 遵循 最左前缀原则

CREATE INDEX idx_a_b ON t(a, b);

✅ 适合多条件查询

❌ (b) 单独查询无法使用该索引

5️⃣ 前缀索引

• 对字段前 N 个字符建索引

• 节省空间

CREATE INDEX idx_title ON article(title(20));

✅ 常用于 TEXT / VARCHAR

❌ 不能用前缀索引做覆盖索引

6️⃣ 全文索引(FULLTEXT)

• 用于关键词搜索

• 替代 LIKE '%xxx%'

CREATE FULLTEXT INDEX ft_content ON article(content);

✅ 支持自然语言 / 布尔搜索

三、按存储方式分类(InnoDB 特有)

1️⃣ 聚簇索引(Clustered Index)

• InnoDB 主键索引

• 数据行存储在叶子节点

• 一张表只有一个

✅ 主键查询最快

❌ 主键应尽量短、自增

2️⃣ 非聚簇索引(Secondary Index)

• 普通索引、唯一索引、组合索引

• 叶子节点存 主键值

✅ 需要回表查询完整数据

四、特殊索引类型

类型 说明

覆盖索引 索引包含查询所需全部字段,无需回表

函数索引 MySQL 8.0 支持对表达式建索引

降序索引 MySQL 8.0 支持 DESC

-- MySQL 8.0

CREATE INDEX idx_time ON log(create_time DESC);

五、索引类型对比总结

类型 是否默认 是否唯一 是否聚簇

PRIMARY KEY ✅ ✅ ✅

UNIQUE ❌ ✅ ❌

INDEX ❌ ❌ ❌

FULLTEXT ❌ ❌ ❌

六、面试高频一句话总结 ✅

MySQL 默认使用 B+Tree 索引,InnoDB 中主键是聚簇索引,普通索引是非聚簇索引;常见类型包括普通索引、唯一索引、主键索引、组合索引和全文索引。

相关推荐
Oo_行者_oO14 小时前
删库先别跑路,万一修复呢?MySQL 误删数据恢复可落地运维文档
数据库·面试
曾阿伦14 小时前
深入了解MongoDB 两地三中心架构
数据库·mongodb·架构
代码雕刻家14 小时前
1.24.MySQL-idea中连接MySQL的基本操作
数据库·mysql·intellij-idea
炘爚14 小时前
MySQL——事务和隔离级别
数据库·mysql
DeboPXK15 小时前
NSK VH25EM 高防尘法兰型导轨技术手册
服务器·网络·数据库·经验分享·规格说明书
小挪号底迪滴15 小时前
Redis 和 MySQL 数据不一致怎么办?缓存更新策略实战
redis·mysql·缓存
the sun3415 小时前
数据库中间件 ShardingSphere的安装与连通性配置
mysql
翼龙云_cloud15 小时前
阿里云国际代理商:如何使用RDS MySQL 构建网站数据库?
数据库·mysql·阿里云
程序猿乐锅15 小时前
【 苍穹外卖day03 | 菜品管理 】
java·开发语言·数据库·mysql
hughnz15 小时前
贝克休斯WellLink Assurance vs 帕特森-UTI REX:钻井报警系统的两条技术路线之争
大数据·数据库·人工智能