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