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

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

http://www.rkmt.cn/news/1410850.html

相关文章:

  • 构建自评估RAG系统:从检索到生成的置信度全链路优化
  • STM32F4开发中SD卡挂载Hard Fault问题解析
  • 如何用Python快速接入Taotoken并调用多款大模型
  • 2026年除油精炼剂厂家推荐榜单:纺织用/环保型/高浓缩精炼剂,APG系列与腰果酚类优质品牌深度解析! - 品牌企业推荐师(官方)
  • Dreamweaver CS6 零基础入门:从创建第一个HTML文件到发布网页的保姆级指南
  • Elasticsearch:使用预计算上下文降低 agent 成本
  • 基于LLM的智能招聘系统:从关键词匹配到语义理解的工程实践
  • STM32CubeIDE串口DMA实战:从零到一实现高效数据收发(附完整代码)
  • 第六感 qw咬住减少cd wCD时间
  • LibreCAD深度解析:开源2D CAD的全景透视与实战指南
  • Stresser与DDoS攻击:地下产业链的技术原理与防御实践
  • 别再让电脑偷偷费电了!手把手教你开启PCIe ASPM,笔记本续航立竿见影
  • AI应用开发新范式:从直觉驱动到评估驱动开发(EDD)
  • SARscape数据处理必备:离线环境下手动准备SRTM1 DEM的完整流程与文件管理心得
  • 深入Ext4与jbd2的“爱恨情仇”:从那个导致IO飙升的整数溢出Bug讲起
  • Linux系统稳定性验证:用Prime95和i7z给你的CPU来一次‘极限烤机’(Ubuntu 20.04实战)
  • 别再让服务器白费电了!手把手教你配置PCIe L1.2子状态,实测功耗降低30%
  • 机器人运动控制中的观察空间与动作空间设计
  • 从玩具车到机器人:用STM32的PWM和TB6612/A4950打造你的第一个智能移动平台
  • 2026年活动隔断/玻璃隔断/铝合金隔断/办公隔断厂家推荐榜:宴会厅隔断与医院移动隔断墙的匠心之选 - 品牌企业推荐师(官方)
  • 从实验室到创客工坊:用读数显微镜测量PCB板线宽的保姆级教程
  • 免费线上投票小程序教你快速创建投票活动(云帆投票操作指南) - 投票小程序
  • 不止于折线图:用Stata的twoway rcap玩转分类数据的可视化呈现
  • Make-it:基于领域知识层的AI硬件方案生成工具,降低DIY门槛
  • FactoryIO虚拟工厂避坑指南:智能仓储项目里,气叉定位不准和坐标转换的那些事儿
  • 量子储层GAN:NISQ时代的机器学习新突破
  • MCP服务器监控实战:像API一样构建可观测性体系
  • 告别卡顿!在LVGL模拟器上实现流畅AVI播放的优化技巧(avilib + SJPG)
  • 构建企业级AI技术栈:从LangChain实战到RAG应用开发
  • 告别命令盲敲!用VS Code图形化界面搞定华为云Git代码上传