【概述】

当数据量不是很大时,查找技术足以满足需求,但对于计算机应用程序来说,其是以大型数据库为中心,并将大型数据库作为文件存放于外存中的,当需要进行查找操作时,查找技术的处理过于缓慢,因此有了索引技术。

索引是为了加快查找速度而设计的一种数据结构,一个文件可能有多个相关的索引,每个索引往往只支持一个关键码,通过索引可以实现对文件中记录的快速访问,其常用于组织大型数据库以及磁盘文件。

关于索引技术的基本概念:

  • 文件:存储在外存上的数据的集合
  • 记录:由若干数据项组成的数据元素,是文件进行存取的基本单位
  • 数据项:数据记录中最基本的、不可分割的数据单位,是文件中可使用的最小单位
  • 索引:将关键码与其对应的记录相关联的过程,隶属于某一文件
  • 索引项:由关键码及关键码对应的记录在存取器中的位置等信息组成,是构成索引的基本单位
  • 静态索引:在文件创建时即生成索引结构,一旦生成就固定,只有当文件再组织时才发生改变
  • 动态索引:在文件创建时即生成索引结构,当文件执行插入、删除等操作时,索引结构随之改变
  • 线性索引:索引项组织为线性结构
  • 树形索引:索引项组织为树形结构
  • 多级索引:对于某些大型文件,其索引本身可能也很大,在这种情况下,可对索引再建一索引,从而构成多级索引结构

【线性索引技术】

线性索引是将索引项集合组织为线性结构,即索引表,其常见的形式有以下三种:

  • 稠密索引:点击这里
  • 分块索引:点击这里
  • 倒排索引:点击这里

【树形索引技术】

由于树结构每个结点可以存储一个元素,拥有多个孩子,那么在元素非常多的时候,就使得要么树的度非常大,要么树的高度非常大,这就使得在外存查找时,内存存取外存的次数非常多,严重影响了时间效率。

为了提高时间效率,就要打破每一结点只能存储一个元素的限制,于是引入了多路查找树(Muitl-way Search Tree),其每一结点的孩子数可以多于两个,且每一结点可存储多个元素。

而树形索引技术,就是将索引项组织为使用多路查找树的树形结构,其常见的形式有以下四种:

  • 2-3 树:点击这里
  • B 树、B+ 树、B* 树:点击这里

理论基础 —— 索引相关推荐

  1. 理论基础 —— 索引 —— B 树、B+ 树与 B* 树

    [B 树] B 树(B-Tree)也写作 B-树,其是一种平衡的多路查找树,主要面向于动态查找,常用于文件系统中. B 树中,结点最大的孩子数目称为 B 树的阶,2-3 树是 B 树的特例,其是 3 ...

  2. 理论基础 —— 索引 —— 倒排索引

    [概述] 倒排表是对次关键码的一种索引表,其索引项包括以下两个结构: 次关键码:要记录的表项 记录号表:存储具有相同次关键字的所有记录的记录号,并且有序排列 这种索引不是由记录来确定数据项,而是由数据 ...

  3. 理论基础 —— 索引 —— 稠密索引

    [概述] 稠密索引适用于静态索引. 在线性索引中,若文件中的每个记录对应一个索引项,则这种索引称为稠密索引. 在稠密索引中,无论文件是否按关键码有序,索引项总是按关键码有序进行排列. [优缺点] 只要 ...

  4. 理论基础 —— 索引 —— 分块索引

    [概述] 分块索引既适用于静态索引,又适用于动态索引. 在稠密索引中,索引项的个数与文件记录个数相同,空间代价很大,为减少索引项的个数,可以对文件分块,使分块有序. 分块有序,是指数据集的记录分为若干 ...

  5. 理论基础 —— 索引 —— 2-3 树

    [概述] 2-3 树是一种多路查找树,其满足于以下性质: 每个结点都具有两个孩子或三个孩子,具有两个孩子的结点称为 2 结点,具有三个孩子的结点称为 3 结点 2 结点包含一个元素和两个孩子,左子树包 ...

  6. 空间点像素索引(一)

    空间点像素索引(一) 给你一个需求,查找定位点附近的一定范围内所有餐馆,你会怎么实现呢? 一一计算定位点与所有餐馆的距离,然后取出最小的距离?如果同时有很多遍布全国的请求都在查找附近的餐馆,按照上述的 ...

  7. MySQL索引背后的数据结构及算法原理【转】

    http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...

  8. mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...

    课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程.对于难以理解的知识点,全部用画图+实战的方式讲解. 彻底明白事务的四个特性:原子性.一致性.隔离性.持久性,用 ...

  9. Mysql 索引原理及优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

最新文章

  1. 【NCEPU】韩绘锦:扩散卷积神经网络
  2. 【Flutter】Dart 数据类型 字符串类型 ( 字符串定义 | 字符串拼接 | 字符串 API 调用 )
  3. Python 操作Word文档插入图片和表格实例演示
  4. RocketMQ集群启动报错:java.lang.RuntimeException: Lock failed,MQ already started
  5. 一只青蛙跳向三个台阶_在藏区流传的青蛙王子的故事
  6. awk -f 分隔符 命令_Linux awk命令详解(详解版)
  7. 一个人的简历(林肯)
  8. sp_configure
  9. 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点
  10. Scary Movie 4
  11. 小程序轮播图 swiper当前滑块容器样式
  12. U3D学习项目一:2D横版小狐狸闯关游戏(代码部分一)
  13. 3.100个渗透测试实战#3(Lampiao)
  14. 《杜拉拉升职记》——值得一读的一本好书
  15. (一)离散型智能制造
  16. 一个有寓意的小故事。。
  17. C#:实现 Van Eck‘s sequence范·艾克序列算法(附完整源码)
  18. 快排平均复杂度O(nlogn)证明
  19. 韩媒看中国量子计算机,韩媒:量子计算机原本是欧美在玩中国却令人吃惊
  20. 这竟然不是阿汤哥?这个「真的吓人」视频火爆全网

热门文章

  1. java 内核驱动程序_内核第三讲,进入ring0,以及编写第一个内核驱动程序.
  2. 最近,我和隐私计算干上了。
  3. 一文讲清,MySQL中的二级索引
  4. arthas用的好好的,写个lambda表达式就跪了?该咋解决?
  5. 这才是JAVA中打印日志的正确姿势
  6. 阿里高专王夕宁:Istio网关之南北向流量管理
  7. 十分钟搞定JeecgBoot 单体升级微服务!
  8. Linux进程实践(5) --守护进程
  9. SqlServer过滤字段中的中文
  10. 2 HTML中的body和它的默认样式