理论基础 —— 索引
【概述】
当数据量不是很大时,查找技术足以满足需求,但对于计算机应用程序来说,其是以大型数据库为中心,并将大型数据库作为文件存放于外存中的,当需要进行查找操作时,查找技术的处理过于缓慢,因此有了索引技术。
索引是为了加快查找速度而设计的一种数据结构,一个文件可能有多个相关的索引,每个索引往往只支持一个关键码,通过索引可以实现对文件中记录的快速访问,其常用于组织大型数据库以及磁盘文件。
关于索引技术的基本概念:
- 文件:存储在外存上的数据的集合
- 记录:由若干数据项组成的数据元素,是文件进行存取的基本单位
- 数据项:数据记录中最基本的、不可分割的数据单位,是文件中可使用的最小单位
- 索引:将关键码与其对应的记录相关联的过程,隶属于某一文件
- 索引项:由关键码及关键码对应的记录在存取器中的位置等信息组成,是构成索引的基本单位
- 静态索引:在文件创建时即生成索引结构,一旦生成就固定,只有当文件再组织时才发生改变
- 动态索引:在文件创建时即生成索引结构,当文件执行插入、删除等操作时,索引结构随之改变
- 线性索引:索引项组织为线性结构
- 树形索引:索引项组织为树形结构
- 多级索引:对于某些大型文件,其索引本身可能也很大,在这种情况下,可对索引再建一索引,从而构成多级索引结构
【线性索引技术】
线性索引是将索引项集合组织为线性结构,即索引表,其常见的形式有以下三种:
【树形索引技术】
由于树结构每个结点可以存储一个元素,拥有多个孩子,那么在元素非常多的时候,就使得要么树的度非常大,要么树的高度非常大,这就使得在外存查找时,内存存取外存的次数非常多,严重影响了时间效率。
为了提高时间效率,就要打破每一结点只能存储一个元素的限制,于是引入了多路查找树(Muitl-way Search Tree),其每一结点的孩子数可以多于两个,且每一结点可存储多个元素。
而树形索引技术,就是将索引项组织为使用多路查找树的树形结构,其常见的形式有以下四种:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现