数据库索引分类。

数据库索引核心分类(实操高频版)

✅ 一、按数据结构(最核心,面试 / 工作必用)

是数据库索引最根本的分类,决定索引性能、适用场景。

  1. B + 树索引 :MySQL/PostgreSQL 默认主流索引,平衡多路查找树 结构,叶子节点串联成链表,支持范围查询、排序、分页,适配 90% 业务场景(主键索引、普通索引均基于此)。
  2. 哈希索引 :基于哈希表实现,等值查询极快 (O (1)),但不支持范围查询、排序,仅适配精准匹配场景(如 Redis、MySQL 的 Memory 引擎)。
  3. 全文索引:专为文本内容检索设计,支持模糊匹配、关键词检索(如 MySQL 的 FULLTEXT,ES 核心索引),适用于文章、评论等大文本字段。
  4. R-Tree 索引 :空间索引,适配地理空间数据(如经纬度、区域范围),支持空间范围查询(如 MySQL 的 GIS 索引)。

✅ 二、按物理存储

区分索引与数据的存储关系,直接影响查询效率。

  1. 聚簇索引(聚集索引) :索引与数据行物理存储在一起 ,一张表仅能有 1 个 ,叶子节点就是实际数据行。MySQL 的主键索引就是聚簇索引,查询速度最快。
  2. 非聚簇索引(二级索引 / 辅助索引) :索引与数据行分开存储,一张表可创建多个,叶子节点存储聚簇索引的主键值,查询需回表(主键查询例外),如普通索引、联合索引。

✅ 三、按逻辑功能 / 业务用途(开发建索引直接参考)

从业务使用角度划分,是日常建索引最常用的分类方式。

  1. 主键索引 :主键字段创建的索引,唯一且非空,自动创建聚簇索引,保证数据唯一性,加速主键查询。
  2. 普通索引:最基础的索引,无唯一性约束,仅加速字段查询,可创建在任意非主键字段。
  3. 唯一索引 :字段值唯一(允许 NULL),保证数据唯一性的同时加速查询,如手机号、身份证号字段。
  4. 联合索引(复合索引) :基于多个字段 创建的索引,遵循最左前缀原则 ,适配多字段组合查询(如where a=1 and b=2),比单字段索引更高效。
  5. 覆盖索引 :索引包含查询所需的全部字段,无需回表,直接从索引中获取数据,大幅提升查询性能(极致优化常用)。

✅ 四、其他高频特殊分类(拓展)

  1. 前缀索引 :对字段前 N 个字符创建索引,适配长字符串字段(如 varchar (255)),节省存储空间,降低索引维护成本。
  2. 反向索引 :对字段值反转后创建索引,适配按尾字符查询的场景(如手机号后 4 位、后缀匹配)。
  3. 位图索引 :按字段离散枚举值建立位图,适配低基数字段(如性别、状态),在 Oracle 中常用,MySQL 极少使用。

✔️ 核心速记(高频考点)

▷ 数据结构:B + 树(主力)、哈希(等值)、全文(文本) ▷ 物理存储:聚簇(1 个,主键)、非聚簇(多个,辅助) ▷ 业务常用:主键、唯一、普通、联合、覆盖

相关推荐
Mr.朱鹏5 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
摇滚侠6 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
qiuhaipeng16 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
wxwx_bscxy3226 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
剑之所向7 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
词却8 小时前
数据库基础:DQL 数据查询语言
数据库·oracle
昌原的儿子LEO10 小时前
Linux IO多路复用与SQLite数据库核心知识点总结
linux·数据库·oracle
山岚的运维笔记10 小时前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
聚美智数10 小时前
网安查询-备案查询-网络安全查询API接口介绍
网络·数据库·web安全
坐吃山猪11 小时前
【多线程】Semaphore使用
java·数据库·oracle·多线程