跳到主要内容

索引原理知识体系概览

问题

数据库索引的核心概念有哪些?为什么索引能加速查询?

答案

什么是索引

索引是数据库中用于 加速数据检索 的数据结构。就像书的目录一样,索引让数据库不需要扫描全部数据就能快速找到目标行。

核心价值

没有索引 → 全表扫描(O(n)O(n)
有索引 → 索引查找(O(logn)O(\log n)O(1)O(1)

索引的代价

优势代价
加速查询占用存储空间
快速排序写入时需要维护索引
加速连接INSERT/UPDATE/DELETE 变慢

知识体系脑图

各数据库索引对比

特性MySQL (InnoDB)PostgreSQLMongoDBES
默认索引结构B+ 树B-treeB-tree倒排索引
聚簇索引✅(主键)❌(通过 CLUSTER 模拟)✅(_id 索引)-
哈希索引Memory 引擎-
全文索引✅(5.6+)✅(GIN + tsvector)✅(文本索引)✅(核心功能)
GiST/GIN--
部分索引-
函数索引✅(8.0+)--
TTL 索引✅(ILM)

面试重点

知识点重要度高频问题
B+ 树结构⭐⭐⭐⭐⭐为什么用 B+ 树不用 B 树/红黑树/跳表
聚簇 vs 非聚簇⭐⭐⭐⭐⭐回表是什么?如何避免
联合索引⭐⭐⭐⭐⭐最左前缀原则
覆盖索引⭐⭐⭐⭐⭐什么是覆盖索引,怎么用
索引失效⭐⭐⭐⭐⭐哪些情况导致索引失效
哈希索引⭐⭐⭐哈希索引 vs B+ 树索引
索引设计⭐⭐⭐⭐如何合理设计索引

本分类文档导航

文档内容
B+ 树索引B+ 树结构、为什么选 B+ 树、聚簇/非聚簇索引
哈希索引哈希索引原理、适用场景、自适应哈希
覆盖索引覆盖索引原理、回表问题、使用技巧
联合索引联合索引结构、最左前缀、索引下推
索引优化实战索引失效、设计原则、优化案例

相关链接