DBMS 中的索引:定义、类型及示例

什么是索引?

索引是一种数据结构技术,可让您快速从数据库文件中检索记录。索引是一个小型表,只有两列。第一列包含表的主键或候选键的副本。第二列包含一组指针,用于保存存储特定键值的磁盘块的地址。

索引——

  • 接收搜索键作为输入
  • 高效地返回匹配记录的集合。

DBMS 中的索引类型

Types of Indexing in DBMS
数据库中的索引类型

数据库中的索引是根据其索引属性定义的。有两种主要的索引方法:

  • 主索引
  • 次级索引

DBMS 中的主索引

主索引是一个有序文件,具有固定长度和两个字段。第一个字段与主键相同,第二个字段指向特定的数据块。在主索引中,索引表中的条目之间始终存在一对一的关系。

DBMS 中的主索引还可进一步分为两种类型。

  • 密集索引
  • 稀疏索引

密集索引

在密集索引中,数据库中的每个搜索键值都会创建一个记录。这有助于您更快地搜索,但需要更多空间来存储索引记录。在此索引方法中,记录包含搜索键值并指向磁盘上的实际记录。

Dense Index

稀疏索引

它是一种索引记录,仅出现在文件中的某些值中。稀疏索引有助于解决DBMS 中密集索引的问题。在此索引技术方法中,一系列索引列存储相同的数据块地址,检索数据时会获取块地址。

但是,稀疏索引仅存储某些搜索键值的索引记录。它需要更少的空间、更少的插入和删除维护开销,但与密集索引相比,它在定位记录方面速度较慢。

以下是稀疏索引的数据库索引示例

Sparse Index

DBMS 中的次级索引

DBMS 中的次级索引可以通过具有每条记录唯一值的字段生成,并且它应该是候选键。它也被称为非聚簇索引。

这种两级数据库索引技术用于减小第一级的映射大小。对于第一级,选择大范围的数字,因此映射大小始终保持很小。

次级索引示例

让我们通过数据库索引示例来理解次级索引

在银行账户数据库中,数据按 acc_no 顺序存储;您可能想查找 ABC 银行中特定分支的所有账户。

在这里,您可以在 DBMS 中为每个搜索键设置一个次级索引。索引记录是指向存储了具有特定搜索键值的记录的桶的指针。

Secondary Index Example

DBMS 中的聚簇索引

在聚簇索引中,记录本身存储在索引中,而不是指针。有时,索引是基于非主键列创建的,这些列可能不是每条记录的唯一值。在这种情况下,您可以组合两个或多个列以获得唯一值并创建索引,这称为聚簇索引。这也有助于您更快地识别记录。

示例

假设一家公司在各个部门招聘了许多员工。在这种情况下,DBMS 中的聚簇索引应为属于同一部门的所有员工创建。

它被视为单个簇,索引指向整个簇。在这里,Department_no 是一个非唯一键。

什么是多级索引?

当主索引不适合内存时,会在数据库中创建多级索引。在此类索引方法中,您可以减少检索记录所需的磁盘访问次数,并将它们保留在磁盘上作为顺序文件,并基于该文件创建稀疏索引。

Multilevel Index

B 树索引

B 树索引是 DBMS 中基于树的索引最常用的数据结构。它是一种多级格式的基于树的索引技术,它具有平衡的二叉搜索树。B 树的所有叶节点都表示实际数据指针。

此外,所有叶节点都通过链接列表相互连接,这使得 B 树能够同时支持随机和顺序访问。

B-Tree Index

  • 叶节点必须包含 2 到 4 个值。
  • 从根到叶的每个路径长度几乎都相等。
  • 非叶节点(根节点除外)具有 3 到 5 个子节点。
  • 除根节点外的每个节点都有 [n/2] 到 n 个子节点。

索引的优点

索引的重要优点/好处是:

  • 它有助于减少检索数据所需的 I/O 操作总数,因此您无需从索引结构访问数据库中的行。
  • 为用户提供更快的搜索和数据检索。
  • 索引还有助于减少表空间,因为您不需要链接到表中的行,也不需要将 ROWID 存储在索引中。因此,您可以减少表空间。
  • 您无法在叶节点中对数据进行排序,因为主键的值对其进行了分类。

索引的缺点

索引的重要缺点/劣势是:

  • 要执行索引数据库管理系统,您需要在具有唯一值的表上有一个主键。
  • 您不能在索引数据上执行任何其他数据库索引。
  • 您不允许分区索引组织的表。
  • SQL 索引会降低 INSERT、DELETE 和 UPDATE 查询的性能。

摘要

  • 索引是一个小型表,包含两列。
  • 两种主要的索引方法是 1)主索引 2)次级索引。
  • 主索引是一个有序文件,具有固定长度和两个字段。
  • 主索引还可进一步分为两种类型:1)密集索引 2)稀疏索引。
  • 在密集索引中,数据库中的每个搜索键值都会创建一个记录。
  • 稀疏索引方法有助于解决密集索引的问题。
  • DBMS 中的次级索引是一种索引方法,其搜索键指定了与文件顺序不同的顺序。
  • 聚簇索引被定义为有序数据文件。
  • 当主索引不适合内存时,会创建多级索引。
  • 索引的最大好处是它有助于减少检索数据所需的 I/O 操作总数。
  • 执行索引数据库管理系统的最大缺点是,您需要在具有唯一值的表上有一个主键。