二级索引详解

二级索引详解

二级索引(Secondary Index)是数据库系统中除主键索引外的附加索引结构,用于加速基于非主键列的查询操作。以下是关于二级索引的全面解析:

一、核心概念

特性 主键索引 (Primary Index) 二级索引 (Secondary Index)
唯一性 必须唯一 可以唯一或非唯一
数量 每表只有一个 每表可创建多个
存储关系 直接指向数据行 指向主键值或数据行地址
作用 保证数据唯一性和完整性 优化查询性能

二、工作原理

1. 基本结构

  • 索引键:创建索引的列或列组合
  • 指针:指向主键值或数据行的物理地址

2. 查询流程

查询请求 → 通过二级索引找到主键值 → 通过主键索引定位数据行

(这个过程称为"回表"操作)

三、类型分类

1. 按数据结构

类型 描述 适用场景
B+树索引 最常用,支持范围查询 大多数业务场景
哈希索引 精确匹配快,不支持范围查询 等值查询为主的场景
全文索引 文本内容搜索 文章、商品描述等搜索

2. 按功能特性

类型 特点
唯一索引 确保索引列值唯一 (UNIQUE约束)
复合索引 多列组合的索引,遵循最左前缀原则
覆盖索引 索引包含查询所需全部字段,避免回表操作
函数索引 基于列值计算结果的索引(如CREATE INDEX idx ON tbl(UPPER(name))

四、不同数据库的实现

1. MySQL(InnoDB)

  • 二级索引存储主键值
  • 回表通过主键索引完成
  • 示例: