最近,数据库索引的主题出现了几次,特别是在数据库索引的缺点和数据库索引对写入操作的影响文章中。这两篇文章都提到了关系数据库支持多种索引类型的事实。今天的文章将提供最常见索引类型的概述。
数据库索引的作用
在关系数据库管理系统(Relational Database Management Systems,RDBMS)中,索引是一个特殊的对象,允许用户从数据库中快速检索记录。通常,索引被实现为只有两列的查找表:第一列包含表的主键或候选键的副本;第二列包含一组指针,用于保存存储特定键值的磁盘块的地址。
两种类型的索引方法
索引类型可以根据它们的索引属性进行分类。这些分为主要和辅助索引两大类。
主索引是一个有序文件,其记录长度固定,有两个字段。索引的第一个字段以有序的方式复制数据文件的主键,第二个字段包含一个指针,指向包含该键的记录可用的数据块。
辅助索引是存储主键值而不是存储指向数据的指针的索引。优点是,通过主键访问数据,不需要任何额外的数据查找,因为你需要的所有数据都可以在主键的叶级页中找到。
DBMS 中的辅助索引可以由一个字段生成,该字段对每条记录都有一个唯一的值,并应该是一个候选键。它也被称为非聚集索引。这种两级数据库索引技术用于减少第一级的映射大小。
密集与稀疏索引
在密集索引中,会为数据库中的每个搜索关键字创建一条记录。这有助于你更快地搜索,但需要更多空间来存储索引记录。在这种索引方法中,记录包含搜索键值并指向磁盘上的真实记录。
稀疏索引是仅针对文件中的某些值出现的索引记录。稀疏索引可帮助你解决 DBMS 中密集索引的问题。在这种索引方法中,一系列索引列存储相同的数据块地址,当需要检索数据时,会获取块地址。由于稀疏索引仅存储某些搜索键值的索引记录,因此它需要的空间更少,插入和删除的维护开销也更少。缺点是与密集索引相比,它们定位记录的速度较慢。
主索引和辅助索引的示例
在 Navicat 中,作为“主键”一部分的字段可在表设计器的“字段”选项卡中标识:
表通常需要辅助索引,以便用户可以搜索不属于主键的字段。在 Navicat 中,所有辅助索引都列在“索引”选项卡中:
当点击“解释”按钮,我们可以看到数据库使用哪些索引来获取给定查询的记录:
总结
这篇文章概述了最常见的 RDBMS 索引类型,并提供了一个使用 Navicat Premium 的示例。如果你对 Navicat Premium, you can try it for free for 14 days!
Rob Gravelle 居住在加拿大渥太华,是一名有 20 多年经验的 IT 专家。过往,Rob 曾为与情报有关的组织(如加拿大边境服务局和各种商业组织)构建系统。在业余时间,Rob 是一名出色的吉他演奏家,他拥有多张 CD 和数字发行版。