目录
主键核心特性
主键必要性问题
索引核心解析
基本定义
优劣分析
索引类型对比
数据结构实现
工作原理
主键与索引核心区别
主键核心特性
- 唯一标识:确保字段数据不重复且不为空
- 数量限制:每表仅允许存在一个主键
- 存储类型:通常采用整数类型存储
- 自动排序:数据库默认按主键值顺序存储记录
主键必要性问题
数据库表并非必须包含主键,需结合以下要素决策:
- 业务需求:是否需要强制唯一性约束
- 查询效率:主键可提升查询速度,但需权衡存储成本
- 替代方案:合理索引设计可达到类似优化效果
对于高频查询的大数据量表,建议建立主键提升性能;简单配置表可不设主键节省资源。
索引核心解析
基本定义
索引是特殊数据结构文件,包含对数据记录的引用指针,本质是排序后的数据目录。常见实现方式为B+树结构。
优劣分析
优势:
- 显著提升数据检索速度
- 增强系统整体性能
劣势:
- 维护成本:增删改操作效率降低
- 空间占用:需额外存储空间
索引类型对比
类型 | 唯一性 | 空值 | 数量限制 | 适用场景 |
---|---|---|---|---|
主键索引 | 强制 | 禁止 | 单列 | 核心业务标识 |
唯一索引 | 强制 | 允许 | 多列 | 非主键唯一约束 |
普通索引 | 允许 | 允许 | 多列 | 常规查询优化 |
全文索引 | 允许 | 允许 | 多列 | 大文本字段检索 |
数据结构实现
-
B+树索引(InnoDB默认)
- 叶子节点形成有序链表
- 非叶节点作为索引层
- 适合范围查询及排序
-
哈希索引
- 基于散列表实现
- 使用除留余数等哈希算法
- 哈希冲突时采用链式存储
- 适合精确单条查询
工作原理
- 建立字段排序结构
- 生成倒排索引表
- 附加数据地址链
- 查询时通过倒排表快速定位
主键与索引核心区别
- 唯一性:主键强制非空唯一,索引允许空值和重复
- 数量限制:主键单表唯一,索引可多列共存
- 功能定位:主键侧重数据完整性,索引专注查询优化
- 自动创建:主键自带索引,普通索引需单独建立