理论基础 —— 索引
【概述】
当数据量不是很大时,查找技术足以满足需求,但对于计算机应用程序来说,其是以大型数据库为中心,并将大型数据库作为文件存放于外存中的,当需要进行查找操作时,查找技术的处理过于缓慢,因此有了索引技术。
索引是为了加快查找速度而设计的一种数据结构,一个文件可能有多个相关的索引,每个索引往往只支持一个关键码,通过索引可以实现对文件中记录的快速访问,其常用于组织大型数据库以及磁盘文件。
关于索引技术的基本概念:
- 文件:存储在外存上的数据的集合
- 记录:由若干数据项组成的数据元素,是文件进行存取的基本单位
- 数据项:数据记录中最基本的、不可分割的数据单位,是文件中可使用的最小单位
- 索引:将关键码与其对应的记录相关联的过程,隶属于某一文件
- 索引项:由关键码及关键码对应的记录在存取器中的位置等信息组成,是构成索引的基本单位
- 静态索引:在文件创建时即生成索引结构,一旦生成就固定,只有当文件再组织时才发生改变
- 动态索引:在文件创建时即生成索引结构,当文件执行插入、删除等操作时,索引结构随之改变
- 线性索引:索引项组织为线性结构
- 树形索引:索引项组织为树形结构
- 多级索引:对于某些大型文件,其索引本身可能也很大,在这种情况下,可对索引再建一索引,从而构成多级索引结构
【线性索引技术】
线性索引是将索引项集合组织为线性结构,即索引表,其常见的形式有以下三种:
- 稠密索引:点击这里
- 分块索引:点击这里
- 倒排索引:点击这里
【树形索引技术】
由于树结构每个结点可以存储一个元素,拥有多个孩子,那么在元素非常多的时候,就使得要么树的度非常大,要么树的高度非常大,这就使得在外存查找时,内存存取外存的次数非常多,严重影响了时间效率。
为了提高时间效率,就要打破每一结点只能存储一个元素的限制,于是引入了多路查找树(Muitl-way Search Tree),其每一结点的孩子数可以多于两个,且每一结点可存储多个元素。
而树形索引技术,就是将索引项组织为使用多路查找树的树形结构,其常见的形式有以下四种:
- 2-3 树:点击这里
- B 树、B+ 树、B* 树:点击这里
理论基础 —— 索引相关推荐
- 理论基础 —— 索引 —— B 树、B+ 树与 B* 树
[B 树] B 树(B-Tree)也写作 B-树,其是一种平衡的多路查找树,主要面向于动态查找,常用于文件系统中. B 树中,结点最大的孩子数目称为 B 树的阶,2-3 树是 B 树的特例,其是 3 ...
- 理论基础 —— 索引 —— 倒排索引
[概述] 倒排表是对次关键码的一种索引表,其索引项包括以下两个结构: 次关键码:要记录的表项 记录号表:存储具有相同次关键字的所有记录的记录号,并且有序排列 这种索引不是由记录来确定数据项,而是由数据 ...
- 理论基础 —— 索引 —— 稠密索引
[概述] 稠密索引适用于静态索引. 在线性索引中,若文件中的每个记录对应一个索引项,则这种索引称为稠密索引. 在稠密索引中,无论文件是否按关键码有序,索引项总是按关键码有序进行排列. [优缺点] 只要 ...
- 理论基础 —— 索引 —— 分块索引
[概述] 分块索引既适用于静态索引,又适用于动态索引. 在稠密索引中,索引项的个数与文件记录个数相同,空间代价很大,为减少索引项的个数,可以对文件分块,使分块有序. 分块有序,是指数据集的记录分为若干 ...
- 理论基础 —— 索引 —— 2-3 树
[概述] 2-3 树是一种多路查找树,其满足于以下性质: 每个结点都具有两个孩子或三个孩子,具有两个孩子的结点称为 2 结点,具有三个孩子的结点称为 3 结点 2 结点包含一个元素和两个孩子,左子树包 ...
- 空间点像素索引(一)
空间点像素索引(一) 给你一个需求,查找定位点附近的一定范围内所有餐馆,你会怎么实现呢? 一一计算定位点与所有餐馆的距离,然后取出最小的距离?如果同时有很多遍布全国的请求都在查找附近的餐馆,按照上述的 ...
- MySQL索引背后的数据结构及算法原理【转】
http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...
- mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...
课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程.对于难以理解的知识点,全部用画图+实战的方式讲解. 彻底明白事务的四个特性:原子性.一致性.隔离性.持久性,用 ...
- Mysql 索引原理及优化
本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...
最新文章
- 【NCEPU】韩绘锦:扩散卷积神经网络
- 【Flutter】Dart 数据类型 字符串类型 ( 字符串定义 | 字符串拼接 | 字符串 API 调用 )
- Python 操作Word文档插入图片和表格实例演示
- RocketMQ集群启动报错:java.lang.RuntimeException: Lock failed,MQ already started
- 一只青蛙跳向三个台阶_在藏区流传的青蛙王子的故事
- awk -f 分隔符 命令_Linux awk命令详解(详解版)
- 一个人的简历(林肯)
- sp_configure
- 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点
- Scary Movie 4
- 小程序轮播图 swiper当前滑块容器样式
- U3D学习项目一:2D横版小狐狸闯关游戏(代码部分一)
- 3.100个渗透测试实战#3(Lampiao)
- 《杜拉拉升职记》——值得一读的一本好书
- (一)离散型智能制造
- 一个有寓意的小故事。。
- C#:实现 Van Eck‘s sequence范·艾克序列算法(附完整源码)
- 快排平均复杂度O(nlogn)证明
- 韩媒看中国量子计算机,韩媒:量子计算机原本是欧美在玩中国却令人吃惊
- 这竟然不是阿汤哥?这个「真的吓人」视频火爆全网