目录
- Mysql简易索引
- 一、没有索引的时候如何查找
- 二、一个简易索引
- 1. 下一页用户记录的主键值必须大于上一页的
- 2. 给所有的页建立一个目录项
- 三、简易索引暴露出的问题
Mysql简易索引
一、没有索引的时候如何查找
先忽略掉索引这个概念,如果现在直接要查某条记录,要如何查找呢?

在一个页中查找
如果表中的记录很少,一个页就够放,那么这时候有 2 种情况:
- 用主键为搜索条件:这时就是之前文章提过的方式,页面目录中用二分法快速定位到槽,然后遍历该槽对应分组的记录,最终找到指定记录。
- 用其他非主键的列为搜索条件:因为数据页中没有为非主键列建立页目录,无法通过二分法快速定位槽,只能从 Infimum 记录开始一次遍历单链表的每条记录,效率低下。
在很多页中查找
当表中的记录非常多,就会用到很多的数据页来存储,这时候需要 2 个步骤:
总得来说,当没有索引,我们无法快速定位到记录所在页,只能从第一页沿着双向链表(页有前一页和后一页)一直找下去,然后在每一页中重复上述的过程查询指定的记录,需要遍历所有记录,这种方式非常耗时。
二、一个简易索引
既然是因为页数太多导致定位记录太慢,那如何解决呢?不妨参考一下“页目录”。
页目录就是为了根据主键快速定位一条记录在页中的位置而设置的。那么我们也可以想办法为快速定位记录所在的页,搞一个“别的目录”。
但是这个“别的目录”要想完成还得干好 2 件事。
1. 下一页用户记录的主键值必须大于上一页的
假设,每个数据页最多可以放 3 条记录(实际上可以放很多),那么现在向表里插入 3 条记录,每条记录有3个列 c1、c2、c3。为了看着方便,存储行格式也简化下,只留关键属性。注意中间3条是用户记录,首尾的2条是虚拟记录 Infimum 和 Supremum。
此时,继续插入 1 条记录。按照假设的情况,现在需要多分配一个新的页,所以 2 个页之间就变成了这样。
注意红色字体显示的2条记录,本来主键 4 的记录是新插入的,按理应该放在新的页。但是,为了满足下一页用户记录的主键值必须大于上一页的用户记录主键值,做了诸如记录移动的操作,这个过程也可以称为“页分裂”。
另外,为什么新页是页 28,而不是 11?因为页在磁盘上可能并不挨着,它们只是通过维护上一页和下一页的编号而建立了链表关系。
2. 给所有的页建立一个目录项
现在继续向表里增加数据,最终多个页的关系是这样:
因为这些页在磁盘上可能不挨着,所有想要快速从这么多页中根据主键快速定位某记录,就要给它们编制一个目录。
每个页对应一个目录项,每个目录项包括:
- 页的用户记录中最小的主键值,用 key 来表示
- 页号,用 page_no 表示
所以,给它们编好目录之后就是这样的关系:
那么,现在我想查找主键值为 20 的记录,具体就分两步走:
先从目录项中根据二分法快速确定出主键值为 20 的记录所在目录项 3 中,且对应的页为 9。知道是在页 9,重复之前的方式,找到最终目标记录。
到此,一个简易的方案完成。而完成的这个简易目录,它有个别名,叫做索引。
三、简易索引暴露出的问题
上述的简易索引是原书作者为了循序渐进的帮助读者理解而设置的内容,这并不是innodb的索引方案。
那么针对上述的建议索引,看下有哪些问题。
问题一:
InnoDB 使用页作为管理存储空间的基本单位,也就是最多只能保存16kb的连续存储。
当表中记录越来越多,此时就需要非常大的连续存储空间才可以把所有的目录项都装下,这对大数据量的表来说不现实。
问题二:
我们经常还要对记录执行增删改操作,会牵一发而动全身。
比如,上图中我如果把页 28 中的记录都删除,那么页 28 就没必要存在,进而目录项 2 也没必要存在。这时候就需要把目录项 2 后的目录项都向前移动一下。
就算不移动,把目录项 2 作为冗余放在目录项列表中,仍然会浪费很多的存储空间。
所以,InnoDB 的作者发现了一种灵活管理所有目录项的方式,详见下一篇。
本文参考书籍:《mysql是怎样运行的》
以上就是Mysql简易索引方案讲解的详细内容,更多关于Mysql简易索引的资料请关注其它相关文章!
相关推荐:
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
AI助手Stut:智能时代的创新引擎,开启未来工作新篇章,ai对ai的格斗游戏
未来智能:AI智能人工软件引领数字化变革
seo系列什么意思,seo的分类 ,que n ai je
SEO优化:让你的网站在竞争中脱颖而出,临沧seo代理
如何用AI改文章,让写作更高效、精准,提升内容质量
怎么用AI写文章:高效创作的秘诀
SEO优化大全:让你的网站排名轻松破局,精准引流更高效!,274357524ai
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
AI网页版智能问答,开启智慧沟通新时代,ai梦境档案用不了手柄
seo网页优化什么意思,seo网站优化必知的10个问答,问吧,【解决】百度不知道 ,ai识别点读机
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
ChatGPT免费版的限制:你需要了解的5大制约因素,Ai分解模型
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
seo资源指的是什么,seo资料 ,绿眼AI
seo要懂些什么,seo主要做什么的 ,小艾艾AI
AI人工智能:改变未来的科技革命
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
专业SEO助力企业在激烈市场竞争中脱颖而出,嘉兴海外网站推广价格
SEO确实是企业增长的关键,这些技巧让你走在行业前沿,山东网站建设信息
好用的AI写作工具,提升写作效率与创意的最佳选择
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
ChatGPT的梯子:突破网络壁垒,畅享智能对话的全新体验,ai的音标1001ai的音标
怎么用AI生成文章?全新写作方式的揭秘与应用指南
seo用到什么软件,做seo需要用到什么软件 ,皮皮ai
SEO已经成为数字营销的核心,如何利用SEO提升网站流量和转化率,含山网站优化推广
目前国内最好的AI人工智能软件:未来新篇章
seo灰帽是什么,灰帽是指什么 ,ai绘画六边形
SEO好吗?助力网站成功的关键之道,网站优化方案范文怎么写
ChatGPT翻译打不开?解决方法!,ai爱股票
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
《“查看更多”背后的秘密:让你的人生更加丰富多彩!》,宁安公司网站建设
SEO怎么做才能提升网站流量与排名?这篇文章给你全攻略,铁岭定制网站推广公司电话
AI免费工具:提升效率与创意的秘密武器
AI写作免费一键生成5000字:高效创作的革命性工具
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
SEO快排还有效果吗揭秘快速排名的真相与未来趋势,ai人像波普
seo要学什么技术,seo要学什么技术好 ,ai.fale
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
互联网快照:记录数字时代的每个瞬间,全网seo怎么优化内容
SEO课:让你从小白变成搜索引擎优化高手,推广自媒体营销计划
SEO管家:为您的网站保驾护航的智能SEO助手,网站推广作用有哪些类型
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
实用AI工具:提升效率、优化生活的科技利器
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
SEO站群:打造强大网络营销引擎,助力企业快速提升排名与流量,seo网站排名案例
ChatGPT4网页空白:重新定义智能交互的未来,怎么登ai
好用的AI写作软件免费推荐:创作新境界!
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
ChatGPT网页版内容显示不全的原因与解决方案,ai超级绘