DBMS 中的索引:什么是索引,索引类型及示例

什么是索引?
索引 索引是一种数据结构技术,它允许您快速地从数据库文件中检索记录。索引是一个只有两列的小表。第一列包含表的主键或候选键的副本。第二列包含一组…… 指针 保存存储该特定键值的磁盘块的地址。
索引:
- 输入一个搜索关键词。
- 有效地返回匹配记录的集合。
如果没有索引,数据库必须扫描每一行才能回答查询。有了索引,它可以直接跳转到匹配的数据块,这就是为什么索引类型的选择对性能影响很大。
DBMS 中的索引类型

数据库索引是根据其索引属性定义的。两种主要的索引方法类型是:
- 主索引
- 二级索引
DBMS 中的主索引
主索引是一个固定长度的有序文件,包含两个字段。第一个字段与主键相同,第二个字段指向特定的数据块。在主索引中,索引表中的条目始终存在一对一的关系。
主指数又分为两种类型:
- 致密指数
- 稀疏指数
致密指数
在密集索引中,数据库中每个搜索键值都会创建一个记录。这有助于加快搜索速度,但需要更多空间来存储索引记录。在这种方法中,记录包含搜索键值,并指向磁盘上的实际记录。
稀疏指数
稀疏索引是指仅针对文件中部分值创建的索引记录。稀疏索引有助于解决密集索引带来的问题。 DBMS在这种技术中,一系列索引列存储相同的数据块地址,当需要检索数据时,就获取该块地址。
稀疏索引仅存储部分搜索键值的索引记录。它占用空间更小,插入和删除操作的维护开销也更低,但查找记录的速度比密集索引慢。
下面是一个稀疏索引的数据库索引示例。
密集索引与稀疏索引
两种主要指数变体之间存在相反的权衡取舍,总结如下。
| 方面 | 致密指数 | 稀疏指数 |
|---|---|---|
| 参赛作品 | 每个搜索键一个 | 每个街区一个 |
| 太空 | 更多 | Less |
| 搜索速度 | 更快 | 比较慢 |
| 维护 | 更高 | 降低 |
DBMS 中的二级索引
在数据库管理系统中,二级索引可以由每个记录都具有唯一值的字段生成,并且该字段应该是候选键。它也被称为非聚集索引。
这种两级数据库索引技术用于减少映射ping 第一层的大小。对于第一层,选择了一个较大的数字范围,因此地图ping 尺寸始终保持较小。
二级索引示例
让我们通过一个数据库索引示例来理解二级索引。在银行账户数据库中,数据按账户编号 (acc_no) 顺序存储,但您可能需要查找 ABC 银行特定分支机构的所有账户。
在这里,您可以为每个搜索键创建一个二级索引。索引记录指向一个存储桶,该存储桶包含指向所有具有该特定搜索键值的记录的指针。
ClusterDBMS 中的索引
在聚集索引中,记录本身存储在索引中,而不是指针。有时,索引会创建在非主键列上,而这些列的值对于每条记录可能并不唯一。在这种情况下,您可以将两个或多个列组合起来以获得唯一值,并创建一个索引,这种索引称为聚集索引。这也有助于您更快地找到记录。
计费示例: 假设一家公司在各个部门招聘了许多员工。在这种情况下,需要为属于同一部门的所有员工创建一个聚类指数。
它们被视为一个单一的集群,索引指向整个集群。这里,Department_no 是一个非唯一键。
什么是多级索引?
当主索引无法完全放入内存时,会创建多级索引。这种索引方法可以减少访问任意记录所需的磁盘访问次数。记录以顺序文件的形式保存在磁盘上,并在该文件之上创建稀疏索引。
B-树索引
B树索引是数据库管理系统中最广泛使用的树状索引数据结构。它是一种多级树状索引格式,采用平衡的索引方式。 二叉搜索树B 树的所有叶子节点都保存着实际的数据指针。
此外,所有叶子节点都通过链表相互连接,这使得 B 树能够支持随机访问和顺序访问。
- 叶节点必须具有 2 到 4 个值。
- 从根到叶的每一条路径长度大多相等。
- 除了根节点之外的非叶子节点有 3 到 5 个子节点。
- 除了根节点和叶节点之外的每个节点都有 n/2 到 n 个子节点。
在以精确匹配查找为主,范围扫描很少见的情况下, 散列 可以作为 B 树索引的一种更快的替代方案。
索引的优点
索引的主要优势在于:
- 它有助于减少检索数据所需的 I/O 操作总数,因此您无需直接从表中访问行。
- 它为用户提供更快捷的数据搜索和检索服务。
- 它可以减少表空间,因为不需要在索引中存储每个链接行的 ROWID。
- 叶节点中的数据已经按键值排序。
索引的缺点
索引的主要缺点有:
- 要进行索引,表需要一个具有唯一值的主键。
- 你不能在已经以相同方式建立索引的数据上再创建一个索引。
- 您不能对索引组织表进行分区。
- 索引会降低 INSERT、DELETE 和 UPDATE 查询的性能。





