DBMS 中的索引:定义、类型及示例
什么是索引?
索引是一种数据结构技术,可让您快速从数据库文件中检索记录。索引是一个小型表,只有两列。第一列包含表的主键或候选键的副本。第二列包含一组指针,用于保存存储特定键值的磁盘块的地址。
索引——
- 接收搜索键作为输入
- 高效地返回匹配记录的集合。
DBMS 中的索引类型
数据库中的索引是根据其索引属性定义的。有两种主要的索引方法:
- 主索引
- 次级索引
DBMS 中的主索引
主索引是一个有序文件,具有固定长度和两个字段。第一个字段与主键相同,第二个字段指向特定的数据块。在主索引中,索引表中的条目之间始终存在一对一的关系。
DBMS 中的主索引还可进一步分为两种类型。
- 密集索引
- 稀疏索引
密集索引
在密集索引中,数据库中的每个搜索键值都会创建一个记录。这有助于您更快地搜索,但需要更多空间来存储索引记录。在此索引方法中,记录包含搜索键值并指向磁盘上的实际记录。
稀疏索引
它是一种索引记录,仅出现在文件中的某些值中。稀疏索引有助于解决DBMS 中密集索引的问题。在此索引技术方法中,一系列索引列存储相同的数据块地址,检索数据时会获取块地址。
但是,稀疏索引仅存储某些搜索键值的索引记录。它需要更少的空间、更少的插入和删除维护开销,但与密集索引相比,它在定位记录方面速度较慢。
以下是稀疏索引的数据库索引示例
DBMS 中的次级索引
DBMS 中的次级索引可以通过具有每条记录唯一值的字段生成,并且它应该是候选键。它也被称为非聚簇索引。
这种两级数据库索引技术用于减小第一级的映射大小。对于第一级,选择大范围的数字,因此映射大小始终保持很小。
次级索引示例
让我们通过数据库索引示例来理解次级索引
在银行账户数据库中,数据按 acc_no 顺序存储;您可能想查找 ABC 银行中特定分支的所有账户。
在这里,您可以在 DBMS 中为每个搜索键设置一个次级索引。索引记录是指向存储了具有特定搜索键值的记录的桶的指针。
DBMS 中的聚簇索引
在聚簇索引中,记录本身存储在索引中,而不是指针。有时,索引是基于非主键列创建的,这些列可能不是每条记录的唯一值。在这种情况下,您可以组合两个或多个列以获得唯一值并创建索引,这称为聚簇索引。这也有助于您更快地识别记录。
示例
假设一家公司在各个部门招聘了许多员工。在这种情况下,DBMS 中的聚簇索引应为属于同一部门的所有员工创建。
它被视为单个簇,索引指向整个簇。在这里,Department_no 是一个非唯一键。
什么是多级索引?
当主索引不适合内存时,会在数据库中创建多级索引。在此类索引方法中,您可以减少检索记录所需的磁盘访问次数,并将它们保留在磁盘上作为顺序文件,并基于该文件创建稀疏索引。
B 树索引
B 树索引是 DBMS 中基于树的索引最常用的数据结构。它是一种多级格式的基于树的索引技术,它具有平衡的二叉搜索树。B 树的所有叶节点都表示实际数据指针。
此外,所有叶节点都通过链接列表相互连接,这使得 B 树能够同时支持随机和顺序访问。
- 叶节点必须包含 2 到 4 个值。
- 从根到叶的每个路径长度几乎都相等。
- 非叶节点(根节点除外)具有 3 到 5 个子节点。
- 除根节点外的每个节点都有 [n/2] 到 n 个子节点。
索引的优点
索引的重要优点/好处是:
- 它有助于减少检索数据所需的 I/O 操作总数,因此您无需从索引结构访问数据库中的行。
- 为用户提供更快的搜索和数据检索。
- 索引还有助于减少表空间,因为您不需要链接到表中的行,也不需要将 ROWID 存储在索引中。因此,您可以减少表空间。
- 您无法在叶节点中对数据进行排序,因为主键的值对其进行了分类。
索引的缺点
索引的重要缺点/劣势是:
- 要执行索引数据库管理系统,您需要在具有唯一值的表上有一个主键。
- 您不能在索引数据上执行任何其他数据库索引。
- 您不允许分区索引组织的表。
- SQL 索引会降低 INSERT、DELETE 和 UPDATE 查询的性能。
摘要
- 索引是一个小型表,包含两列。
- 两种主要的索引方法是 1)主索引 2)次级索引。
- 主索引是一个有序文件,具有固定长度和两个字段。
- 主索引还可进一步分为两种类型:1)密集索引 2)稀疏索引。
- 在密集索引中,数据库中的每个搜索键值都会创建一个记录。
- 稀疏索引方法有助于解决密集索引的问题。
- DBMS 中的次级索引是一种索引方法,其搜索键指定了与文件顺序不同的顺序。
- 聚簇索引被定义为有序数据文件。
- 当主索引不适合内存时,会创建多级索引。
- 索引的最大好处是它有助于减少检索数据所需的 I/O 操作总数。
- 执行索引数据库管理系统的最大缺点是,您需要在具有唯一值的表上有一个主键。