你了解哪些数据库索引?

考查重点:索引访问模式与维护成本。索引按约束、组合和结构分类,B+树范围、哈希等值、倒排词项;收益是少扫描,代价是空间和写维护

本题目录

参考答案

核心回答

索引是数据库为定位数据、缩小候选范围而维护的检索结构。它可以加快过滤、连接、排序等操作,也可以承载唯一性约束,但需要额外空间和写入维护成本。

我会按不同维度介绍,而不是把所有名字当成互斥的类型。以 MySQL 8.4/InnoDB 为主:

  • 按约束和用途:主键索引用于唯一、非空地标识记录;唯一索引约束某个键或组合键不能重复;普通索引不附加唯一性要求。主键和唯一索引都可以由多列组成。
  • 按键包含的列数:单列索引、联合索引。联合索引按定义的列顺序组织组合键,不等于给每一列分别建索引。
  • 按行数据的组织方式:聚簇索引、二级索引。InnoDB 的聚簇索引叶子保存行数据,二级索引记录包含索引列和主键值,必要时再根据主键回表。这个关系不能直接套给所有数据库。
  • 按检索结构或访问需求:B-tree/B+ 树适合有序数据的等值、范围与排序访问;Hash 主要支持等值查找;全文索引服务文本检索,常采用倒排结构;空间索引服务几何对象等空间查询。支持哪些结构,需要看数据库和存储引擎。

这些维度可以叠加:一个索引可以同时是“联合、唯一、B+ 树、二级索引”。覆盖索引则是相对于具体查询而言:查询需要的数据都能由索引提供,并不是又一种独立的树结构。

进一步解释

用一个表说明分类如何组合

以 K 线表为参考例子:假设每个品种、周期和开盘时间的组合只能有一条记录,这三列均非空;表另有 id 主键。可以考虑在 (symbol, period, open_time) 上建立联合唯一索引。

它同时具备几种身份:三列组成,所以是联合索引;用于限制重复,所以是唯一索引;在 InnoDB 中采用 B+ 树组织;由于聚簇索引已由 id 主键承担,它又是二级索引。

对于“某个品种、某个周期,在一个时间范围内的记录”,这个列顺序有利于先缩小品种和周期,再定位时间范围。如果查询只需要这些键列和 id,也具备由该索引覆盖的条件;如果还读取未包含的价格字段,则通常需要回表。实际是否采用该索引,还要看数据分布与执行计划。

这只是解释索引设计的假设例子,业务上是否允许多来源、修订版本等,还会影响唯一键的组成。

其他数据库也只有这几种吗?

不是。例如 PostgreSQL 18 提供 B-tree、Hash、GiST、SP-GiST、GIN、BRIN 等访问方法。GIN 是倒排索引,可用于数组等包含多个成员的值;BRIN 保存连续数据块范围的摘要,适合字段值与物理存储顺序有较强相关性的场景。

这说明“我知道哪些索引”还应能回答它适合什么条件,而不只是报名称。MySQL InnoDB 的普通索引不能直接按用户定义成 HASH;其内部的自适应哈希机制也不是另建一种业务表索引的等价选项。

常见追问

前缀索引、函数索引和覆盖索引有什么不同?

前缀索引只取字符串的一部分作为键;函数或表达式索引按计算结果建立键;覆盖索引描述现有索引与某条查询所需数据之间的关系。它们回答的是不同问题,是否支持及具体限制也取决于数据库版本。

索引是不是越多越好?

不是。每个索引都占空间,相关插入、删除和更新还要维护索引。设计时应从高频查询的过滤、连接、排序和唯一性要求出发,再检查执行计划与实际开销。即使使用了索引,也可能扫描大量索引项或频繁回表。

联合索引是否要求 WHERE 中也按相同顺序写条件?

不要求普通等值条件在 SQL 文本中照抄索引列顺序。重要的是索引键的排列、查询条件能构成怎样的定位范围,以及优化器选择什么访问路径。

对应教程

参考资料

相关面经

8 篇

新东方

Java开发工程师(AI Agent方向)
校招一面
查看原面经 →
mysql中你觉得难点在哪?索引重点讲一下?

美团

AI 数据开发工程师
秋招一面
查看原面经 →
数据库相关,索引这块了解吗?

百度

面经合集
查看原面经 →
数据库基础:了解数据库索引吗?

哔哩哔哩(B站)

后端开发工程师(游戏广告)
实习
查看原面经 →
索引

百度

大模型研发工程师(Agent 方向)
秋招一面、二面
查看原面经 →
了解数据库索引吗?实际项目里怎么使用索引?
展开剩余 3 篇面经

字节跳动

Agent 开发工程师
秋招一面
查看原面经 →
了解哪些数据库的索引?展开介绍

百度

后端开发
秋招一面
查看原面经 →
数据库里有哪些索引?

字节跳动

后端开发工程师(AI)
实习一面
查看原面经 →
介绍索引(B+树)

收录题集

1 个来源,共1 份题集

工程化踩坑:死循环、状态丢失与成本控制

Onefly · zero2Agent · 1 条原题

查看题集 →

相关题目

4 题