DBMS 中的索引

2025 年 8 月 4 日 | 阅读 6 分钟

引言

在本文中,我们将通过各种示例详细阐述索引的概念。

索引是什么意思?

  • 索引用于通过最大限度地减少处理查询时所需的磁盘访问次数来优化数据库的性能。
  • 索引是一种数据结构。它用于快速定位和访问数据库表中的数据。

索引结构

可以使用某些数据库列创建索引。

DBMS Indexing in DBMS
  • 数据库的第一列是搜索键,它包含表的主键或候选键的副本。主键的值按排序顺序存储,以便可以轻松访问相应的数据。
  • 数据库的第二列是数据引用。它包含一组指针,这些指针保存着可以找到特定键值的磁盘块的地址。

索引方法

DBMS Indexing in DBMS

有序索引

通常对索引进行排序以加快搜索速度。已排序的索引称为有序索引。

示例:假设我们有一个包含数千条记录的员工表,每条记录长度为 10 字节。如果他们的 ID 从 1、2、3... 开始,并且我们需要搜索 ID 为 543 的学生。

  • 在没有索引的数据库的情况下,我们必须从头开始搜索磁盘块,直到到达 543。DBMS 将在读取 543*10=5430 字节后读取记录。
  • 在有索引的情况下,我们将使用索引进行搜索,DBMS 将在读取 542*2=1084 字节后读取记录,这与前一种情况相比非常少。

主索引

  • 如果索引是根据表的主键创建的,则称为主索引。这些主键对于每条记录都是唯一的,并且包含记录之间的 1:1 关系。
  • 由于主键是按排序顺序存储的,因此搜索操作的性能相当高效。
  • 主索引可分为两类:密集索引和稀疏索引。

密集索引

  • 密集索引包含数据文件中每个搜索键值的索引记录。这使得搜索更快。
  • 在这种情况下,索引表中的记录数与主表中的记录数相同。
  • 它需要更多空间来存储索引记录本身。索引记录包含搜索键和指向磁盘上实际记录的指针。
DBMS Indexing in DBMS

稀疏索引

  • 在数据文件中,仅对少数项出现索引记录。每项都指向一个块。
  • 在这种情况下,索引不是指向主表中的每条记录,而是指向主表中记录之间的间隙。
DBMS Indexing in DBMS

聚簇索引

  • 聚簇索引可以定义为有序数据文件。有时索引是根据非主键列创建的,这些列对于每条记录可能不是唯一的。
  • 在这种情况下,为了更快地识别记录,我们将对两个或多个列进行分组以获得唯一值,并从中创建索引。此方法称为聚簇索引。
  • 具有相似特征的记录被分组,并为这些组创建索引。

示例:假设一家公司在每个部门都有几名员工。假设我们使用聚簇索引,其中同一 Dept_ID 的所有员工被视为一个单独的簇,索引指针指向整个簇。这里 Dept_Id 是一个非唯一键。

DBMS Indexing in DBMS

之前的模式有点令人困惑,因为一个磁盘块被属于不同簇的记录共享。如果我们为不同的簇使用单独的磁盘块,那么这被称为更好的技术。

DBMS Indexing in DBMS

二级索引

在稀疏索引中,随着表的大小增长,映射的大小也随之增长。这些映射通常保留在主内存中,以便地址获取更快。然后二级存储器根据从映射中获取的地址搜索实际数据。如果映射大小增大,则获取地址本身会变慢。在这种情况下,稀疏索引将不是有效的。为了克服这个问题,引入了二级索引。

在二级索引中,为了减小映射的大小,引入了另一个级别的索引。在此方法中,最初选择了较大的列范围,以便第一级的映射大小变小。然后将每个范围进一步划分为更小的范围。第一级的映射存储在主内存中,因此地址获取更快。第二级映射和实际数据存储在二级存储器(硬盘)中。

DBMS Indexing in DBMS

例如

  • 如果要查找图中的卷号为 111 的记录,它将在第一级索引中搜索小于或等于 111 的最高条目。它将在该级别获得 100。
  • 然后,在第二级索引中,它再次执行 max (111) <= 111 并获得 110。现在使用地址 110,它转到数据块并开始搜索每条记录,直到找到 111。
  • 这就是在此方法中执行搜索的方式。插入、更新或删除也以相同的方式完成。

索引的优点

以下是索引的各种优点列表:

  • 提高查询性能:索引有助于更快地从数据库中检索数据。通过在列上添加索引,数据库可以快速找到匹配特定值的行,并减少执行查询所需的时间。
  • 系统化数据访问:索引通过减少检索数据所需的磁盘输入/输出量来帮助高效地访问数据。
  • 数据完整性:它防止在数据库中存储重复数据,这在执行查询时可能会导致问题。它用于强制执行主键和外键约束,这对于维护数据库中的数据完整性和参照完整性很重要。
  • 优化数据排序:索引用于改进排序性能,其中在用于排序的列上创建索引。

索引的缺点

以下是索引的各种缺点列表

  • 索引维护:需要定期维护索引,尤其是在重要数据频繁更改时。这包括更新、重建或删除旧索引。
  • 附加要求:它使用 B 树、B+ 树和哈希表等高效数据结构来实现快速数据检索。
  • 查询优化:它在查询优化中起着关键作用。索引用于决定查询的最佳组织执行计划。

关于索引的常见问题

1. 列出索引的一些不同属性?

答案:以下是 DBMS 中索引的各种属性列表。

  • 快速数据检索
  • 改进的查询性能
  • 可扩展性
  • 唯一约束

2. 索引和哈希的区别?

答案:以下是索引和哈希之间的区别。

序号索引哈希
1.它使用数据引用,其中包含与键关联的磁盘块的地址。它使用称为哈希函数的算术函数来创建磁盘上数据记录的直接位置。

3. 密集索引和稀疏索引的区别?

答案:以下是密集索引和稀疏索引之间的区别。

序号密集索引稀疏索引
1.它存储每条记录的索引条目。它仅存储少量记录的条目,从而导致不同的存储和查找效率。

4. 列出主索引的一些属性?

答案:以下是 DBMS 中主索引的各种功能列表。

  • 在主索引中,搜索键是唯一的且按排序顺序排列。
  • 在这种情况下,搜索键不能为 null,因为它指向一个数据块。
  • 它快速而高效。

5. 列出 DBMS 中索引的一些应用?

答案:在当今时代,索引几乎用于所有领域。以下是 DBMS 中索引的各种应用列表。

  • 它用于电子商务网站,通过名称或 ID 搜索产品和类别。
  • 它用于银行系统,其中在账号、ID 等上创建索引。

下一主题B+ Tree