首页 > 其他分享 >18. 索引组织表

18. 索引组织表

时间:2024-04-10 23:33:23浏览次数:12  
标签:组织 主键 叶子 索引 PageNumber 18 存放 节点

在InnoDB存储引擎中,Row都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table),或者叫聚集索引(clustered index) 

  1. 每张表必须有一个主键
  2. 根据主键的值构建一个B+树
  3. 这颗B+树的叶子节点存放所有记录
  4. 非叶子节点存放主键和指针(若干个{主键,指针}组成一个非页节点)
    1. 这里指针其实就是PageNumber,这个PageNumber就是下一层节点的PageNumber(这里不需要SpaceID,因为SpaceID对应的是ibd文件,我们现在是在ibd文件内部查找数据)

 

主键

如果创建表的时候没有显示指定主键,则InnoDB会按照如下方式选择或创建主键

  1. 判断表中是否有非空唯一索引,如果有,该列为主键
    1. 如果存在多个非空唯一索引,以创建表时第一个定义的非空唯一索引为准,而不是(columns)定义的顺序
  2. 如果上述条件都不符合,则InnoDB自动创建一个6字节大小的主键

 

索引组织表与堆表

  • 堆表

堆表将索引和数据分开(如MyISAM),索引中叶子节点存放的是数据的位置,而不是数据本身

 

  • 索引组织表

索引组织表将索引和数据放在了一起,索引的叶子节点(leaf page)存放了所有完整的记录(Row)。
索引即数据,数据即索引

注意:

1. 非叶子节点(Non-leaf page)中不会存放所有的数据(Row)的 {主键, PageNumber},而是从叶子节点(leaf page)中选出一个数据的主键,将这个主键和该页的PageNumber填入到非叶节点(Non-leaf page)中
2. 从逻辑上看,是一棵B+树,但是从物理上看都是每个页(非叶子节点和叶子节点)通过指针串在一起,使得逻辑有序。

 

标签:组织,主键,叶子,索引,PageNumber,18,存放,节点
From: https://www.cnblogs.com/gavin-zheng/p/18127784

相关文章

  • #莫队二次离线,根号分治#洛谷 5398 [Ynoi2018] GOSICK
    题目\(m\)组询问求\(\sum_{l\leqi,j\leqr}[a_i\bmoda_j==0],n,m,a_i\leq5\times10^5\)分析设\(f(l,r,x)\)表示\(i或j\in[1,x],i或j\in[l,r]\)时的答案,\(g_x\)表示\([1,x]\)的答案,根号的做法可以通过三秒由于涉及区间内的求值,需要在莫队的基础上二次离线,那......
  • CF1887E
    题面Alice和你玩游戏。有一个\(n\timesn\)的网格,初始时没有颜色。Alice在游戏开始前依次给其中\(2n\)个格子分别涂上了第\(1\sim2n\)种颜色,并告诉你每个颜色的位置。接下来的每次操作,你可以选择一个未涂色的格子,由Alice在\(2n\)种颜色中选择一个涂在该格子上,并告......
  • CF1817A Almost Increasing Subsequence 题解
    题面。2023.5.18修正关于前缀和数组的说法,与代码适配的思路。题意给定长度为\(n\)一个序列\(a\)以及\(q\)次询问,每次询问给出\(l\)和\(r\),要求找出序列\(a\)在\([l,r]\)内最长的几乎递增子序列。对于几乎递增的定义:如果一个序列中不存在连续的三个数\(x\),\(y\)......
  • 运维系列(亲测有效):利用 PHPStuday 2018 集成化工具对Apache进行站点域名管理
    利用PHPStuday2018集成化工具对Apache进行站点域名管理利用PHPStuday2018集成化工具对Apache进行站点域名管理利用PHPStuday2018集成化工具对Apache进行站点域名管理第一步:第二步:第三步:第四步:第五步:利用PHPStuday2018集成化工具对Apache进行站点域......
  • C语言学习笔记day18
    1.指针基本概念    1.地址:用来区分内存中不同字节的编号   2.指针:地址就是指针,指针就是地址   3.指针变量:存储指针的变量,有时去掉变量,称为指针2.指针运算符   1.&:      1.获得一个变量在内存空间中的首地址      2.让表达式类......
  • CF1804C Pull Your Luck 题解
    题面。翻译清晰,这里就不吐槽了。根据轮盘转动的方法,可以看出这是一个简单的高斯求和。因为这是一个轮盘,在轮盘中转动了\(now\)个格子与转动了\(now\bmodn\)所到达的格子是一样的(这就没必要证明了吧),因此我们很容易就能得到一个最朴素的代码: cin>>T; while(T--) { c......
  • P8661 [蓝桥杯 2018 省 B] 日志统计 题解
    好久没写题解了,水一篇。这里主要想讲的是不同的处理方法,在阅读本篇题解前请确保读完题。详解一,排序这很好理解,题目要求将热帖从小到大输出,同时题目中还有相对的时间这一概念,因此将输入的\(id\)与\(ts\)按照优先\(id\)其次\(ts\)的排序方式从小到大,排序,这样输出时就没......
  • CF1891B Deja Vu 题解
    建议凭橙,思路橙,码量红到橙。题面。思路一,暴力直接依照题意模拟,复杂度\(O(tqn^2)\),看一眼数据范围,妥妥T飞,倒在第三个点。二,逐步优化看一眼数据发现,虽然\(q\)很大,但实际上\(x\)只有三十个值,因此首先预处理出从\(2^1\)到\(2^{30}\)的所有值,摘掉一个\(n\),复杂度\(O......
  • CF1815A Ian and Array Sorting 题解
    题面。直接进入主题吧。思路题目要求非递减序列,很明显,由题目给的操作,一定可以将这个序列的前\(n-1\)项能够满足是非递减序列,最后只需要比较第\(n\)项是否大于等于第\(n-1\)项即可。解释一下为什么。对于序列\(a\),从\(a_1\)开始到\(a_{n-1}\)结束,每次对\(a_i\)......
  • AI时代,搜索引擎的巨头地位恐怕不保了
    兄弟们,你们使用搜索网站的频率有降低吗?ChatGPT已经流行了一年多了,这期间数个大模型都发展了起来。搜索引擎本质上也属于问答系统,所以,在大模型成熟之后,我使用搜索的频率越来越低了。主要是因为大模型直接给出答案,而且结果已经非常精准了。比如我想知道“羽毛球比赛中鹰眼的......