当前位置:网站首页>干货 | RDBMS 索引类型概述
干货 | RDBMS 索引类型概述
2022-07-21 05:09:00 【Navicat中国】
最近,数据库索引的主题出现了几次,特别是在数据库索引的缺点和数据库索引对写入操作的影响文章中。这两篇文章都提到了关系数据库支持多种索引类型的事实。今天的文章将提供最常见索引类型的概述。
数据库索引的作用
在关系数据库管理系统(Relational Database Management Systems,RDBMS)中,索引是一个特殊的对象,允许用户从数据库中快速检索记录。通常,索引被实现为只有两列的查找表:第一列包含表的主键或候选键的副本;第二列包含一组指针,用于保存存储特定键值的磁盘块的地址。
两种类型的索引方法
索引类型可以根据它们的索引属性进行分类。这些分为主要和辅助索引两大类。
主索引是一个有序文件,其记录长度固定,有两个字段。索引的第一个字段以有序的方式复制数据文件的主键,第二个字段包含一个指针,指向包含该键的记录可用的数据块。
辅助索引是存储主键值而不是存储指向数据的指针的索引。优点是,通过主键访问数据,不需要任何额外的数据查找,因为你需要的所有数据都可以在主键的叶级页中找到。
DBMS 中的辅助索引可以由一个字段生成,该字段对每条记录都有一个唯一的值,并应该是一个候选键。它也被称为非聚集索引。这种两级数据库索引技术用于减少第一级的映射大小。
密集与稀疏索引
在密集索引中,会为数据库中的每个搜索关键字创建一条记录。这有助于你更快地搜索,但需要更多空间来存储索引记录。在这种索引方法中,记录包含搜索键值并指向磁盘上的真实记录。
稀疏索引是仅针对文件中的某些值出现的索引记录。稀疏索引可帮助你解决 DBMS 中密集索引的问题。在这种索引方法中,一系列索引列存储相同的数据块地址,当需要检索数据时,会获取块地址。由于稀疏索引仅存储某些搜索键值的索引记录,因此它需要的空间更少,插入和删除的维护开销也更少。缺点是与密集索引相比,它们定位记录的速度较慢。
主索引和辅助索引的示例
在 Navicat 中,作为“主键”一部分的字段可在表设计器的“字段”选项卡中标识:
表通常需要辅助索引,以便用户可以搜索不属于主键的字段。在 Navicat 中,所有辅助索引都列在“索引”选项卡中:
当点击“解释”按钮,我们可以看到数据库使用哪些索引来获取给定查询的记录:
总结
这篇文章概述了最常见的 RDBMS 索引类型,并提供了一个使用 Navicat Premium 的示例。如果你想试用 Navicat 16,可以在这里下载 Navicat 的 14 天全功能免费试用版。
往期回顾
边栏推荐
- [intranet penetration] information collection in the domain (manual +adfind tool)
- 25. [method of judging whether it is a prime number]
- [vulnerability recurrence] cve-2022-22954 VMware workspace one access vulnerability analysis
- Redis (VI) - redis enterprise's actual merchant query cache
- Voting implementation of sushitoken
- 易语言学习笔记(四)--js解密,图形验证码,滑块,鱼刺多线程
- 基于双数组实现Set功能(基于Solidity)
- 易语言学习笔记(三)
- MetaForce原力元宇宙之我见,教你迅速搞懂滑落机制
- MasterChef interpretation of sushiswap
猜你喜欢
随机推荐
NFT Market的一种实现
非让写标题,烦死惹
Minesweeping (C language)
Redis(六) - Redis企业实战之商户查询缓存
Oracle 分组数据
实操演练 | 数据库中检索奇数或偶数行的简单方法
SushiToken的投票实现
MetaForce原力元宇宙之我见,教你迅速搞懂滑落机制
基于Merkle Tree为NFT添加白名单功能(翻译)
Redis(七) - 封装Redis工具类
一天学会MYSQL----学习笔记(一)
[permission promotion] MSSQL authorization raising method
Solidity中的mapping为何不提供按照key遍历的功能?
【权限提升】提权exp查找思路与利用方法
文件操作上(C语言)
[intranet penetration] cobaltstrike traffic encryption
Redis (III) - common redis commands
并发编程(二十二)-ReentrantLock 条件变量实现原理
Typescript basic learning record
Redis (vii) - encapsule la classe d'outils redis