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 中主键是聚簇索引,普通索引是非聚簇索引;常见类型包括普通索引、唯一索引、主键索引、组合索引和全文索引。

相关推荐
龙仔7253 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
老杨聊技术3 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos
sunxr.2273 小时前
Mysql-----最后一次作业
数据库·mysql
普通网友4 小时前
Python FastAPI 异步数据库管理
数据库·fastapi
晓子文集4 小时前
Tushare接口文档:期货合约信息表(fut_basic)
大数据·数据库·金融·金融数据·量化投资
三言老师4 小时前
CentOS7.9:Redis‑Cluster集群部署结构化实战教程
linux·运维·服务器·数据库
旺仔学长 哈哈5 小时前
Spring Boot 智能停车场管理系统---附源码+数据库文档
数据库·spring boot·后端·智能停车场
ClickHouseDB5 小时前
ClickHouse托管Postgres:OLTP+OLAP,新能力解锁最佳数据平台
java·前端·数据库
数智化管理手记6 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
吴声子夜歌6 小时前
MongoDB 4.2——选择片键
数据库·mongodb