二级索引详解
二级索引(Secondary Index)是数据库系统中除主键索引外的附加索引结构,用于加速基于非主键列的查询操作。以下是关于二级索引的全面解析:
一、核心概念
特性 | 主键索引 (Primary Index) | 二级索引 (Secondary Index) |
---|
唯一性 | 必须唯一 | 可以唯一或非唯一 |
数量 | 每表只有一个 | 每表可创建多个 |
存储关系 | 直接指向数据行 | 指向主键值或数据行地址 |
作用 | 保证数据唯一性和完整性 | 优化查询性能 |
二、工作原理
1. 基本结构
- 索引键:创建索引的列或列组合
- 指针:指向主键值或数据行的物理地址
2. 查询流程
查询请求 → 通过二级索引找到主键值 → 通过主键索引定位数据行
(这个过程称为"回表"操作)
三、类型分类
1. 按数据结构
类型 | 描述 | 适用场景 |
---|
B+树索引 | 最常用,支持范围查询 | 大多数业务场景 |
哈希索引 | 精确匹配快,不支持范围查询 | 等值查询为主的场景 |
全文索引 | 文本内容搜索 | 文章、商品描述等搜索 |
2. 按功能特性
类型 | 特点 |
---|
唯一索引 | 确保索引列值唯一 (UNIQUE 约束) |
复合索引 | 多列组合的索引,遵循最左前缀原则 |
覆盖索引 | 索引包含查询所需全部字段,避免回表操作 |
函数索引 | 基于列值计算结果的索引(如CREATE INDEX idx ON tbl(UPPER(name)) ) |
四、不同数据库的实现
1. MySQL(InnoDB)