MySql数据库索引原理
小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《MySql数据库索引原理》,就很适合你,本篇文章讲解的知识点主要包括MySQL。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

这篇文章希望数据库索引的原理对大家有帮助。
第一部分从数据结构和算法理论方面讨论MySQL数据库索引的数学基础。
第二部分结合MySQL数据库的InnoDB数据存储引擎中的索引的构建,实现了讨论集成索引、非聚合索引、覆盖索引等话题。
一、数据结构及算法理论
Innodb存储引擎实现索引数据结构的是B+树,下面介绍几个数据结构。一步一步地说明为什么应该使用B+树。
1.1 B+树索引
B+树索引的结构与二叉树很类似。键值快速找到数据。但是,B+树种的B不是二叉,它表示平衡。注意:只有索引行。数据库通过将页面加载到存储器中来检索存储器中的数据,最后检索数据。
介绍二分搜索法。按排序(递增或减少)的顺序记录,在搜索过程中通过跳转查找。例如,示出了5、10、19、21、31、37、42、48、50、52的10个数量。
可以以三次搜索速度找到48。逐次搜索需要8次。对于上述10个数,依次检索的平均检索次数是5.5次,二分检索法是2.9次,最坏的情况是按顺序检索的次数是10次,二分检索的次数是4次。两点搜索将innodb页面Directory的插槽按主关键字的顺序保存,对于每个具体记录的查询将页面Directory分成两部分进行检索。
1.2 二叉查找树
数字表示各节点的键的值。在树里找。左子树的键值总是小于跟的键值,右子树的键值总是大于跟的键值。通过中序遍历得到键值:2、3、5、6、7、8。
查找树的平均查找次数为2.3次,但是查找树是可以任意构建。和这样调查顺序是一样的。因此,引用了取得二叉树平衡的想法,AVL树。
1.3 定义
符合查找树的定义,其次必须满足任何节点的左右两个子树的高度最大差为1。
二叉树的平衡非常快,但是为了维持二叉树的平衡,通常需要一次以上的左转和右转插入或更新后树木的平衡。
1.4 B+树特性
全部记录在叶节点中,按顺序保存,各叶节点(以页为单位)在逻辑上连续保存,是双向循环链表。
B+树插入必须确认插入后的叶节点中的记录还被排序,因此在插入时必须考虑以下三种情况。
数据库中的一个特征是B。因此,在数据库中,B+树的高度通常在2~3层,也就是说,正在寻找某个键行的记录。最多可以进行2~3次IO。普通盘每秒至少可以进行100次IO。
二、索引摘要和非编译索引
集合索引和非集合索引的区别在于页节点是否保存整个行的记录。
2.1 聚集索引
InnoDB存储引擎表是索引组织表,表格数据按主关键字顺序保存。集合索引是从各表的主键制作B+树,在叶节点中存储有表整体的行记录数据,因此索引聚集的叶节点也成为数据页。此特性用于收集索引,索引表中的数据也被确定为索引的一部分。同时B+树的数据结构相同。每个数据页面通过双向链接链接链接。
实际数据只由一个B+树排列。因此,每个表格只有一个链接索引。在许多情况下,查询优化器倾向于采用集中索引,因为它可以在索引的叶节点处直接找到数据。此外,由于定义了数据的逻辑顺序,所以可以快速访问对象范围的查询。查询优化器可以很快地发现需要扫描某范围的数据。注意各页的记录也用双向链保持。
2.2 非聚集索引
也叫辅助索引。数据行中没有全部数据。页面节点除了关键字之外,每个页面级别的索引都包含书签。InnoDB记忆引擎告诉我们索引对应的行数据在哪里。因为InnoDB存储引擎表是索引组织表,因此InnoDB存储引擎的辅助索引书签是该行的数据的集合索引键。图是索引和辅助索引的关系。
用辅助索引检索数据时,InnoDB存储引擎创建循环辅助索引,用叶电平指针取得箭头键索引的键,用主键索引找到完整的行记录。例如,要在三个高度的辅助索引树中查找数据,必须找到辅助索引的主关键字。期间是3次。如果索引树的高度为3,则会检索3次组合索引。要搜索有完整行数据的页面,6次逻辑Io必须访问最终数据页面。

今天关于《MySql数据库索引原理》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

- 上一篇
- 基于JavaFX开发数据库表文档生成工具

- 下一篇
- mybatis框架的xml映射文件常用查询
-
- 数据库 · MySQL | 1天前 |
- MySQL设置中文界面,超简单教程来了!
- 332浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql 索引提示
- MySQL进阶必看!FORCE/USE/IGNOREINDEX用法大揭秘
- 182浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- 手把手教你写MySQL存储过程,小白也能轻松上手
- 163浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql group by
- MySQL分组查询优化:GROUPBY原理+索引优化超全解析
- 324浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL设置中文语言,轻松拥有中文界面
- 211浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL建库语句从入门到精通:创建数据库+设置字符集&排序规则(附实例)
- 176浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- 从零开始学MySQL数据库操作,小白轻松变大神!
- 496浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL插入日期到时间字段,轻松搞定日期格式
- 484浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql 数据压缩
- MySQL怎么实现高效压缩存储?表压缩+列式存储详细解读
- 272浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql JOIN优化
- MySQL优化JOIN操作:七大技巧教你提升关联查询速度
- 106浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL出现中文乱码?超详细解决方案一次性搞定
- 211浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL主从复制这样配!搞懂这些参数,replication稳了~
- 131浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 茅茅虫AIGC检测
- 茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
- 18次使用
-
- 赛林匹克平台(Challympics)
- 探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
- 50次使用
-
- 笔格AIPPT
- SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
- 57次使用
-
- 稿定PPT
- 告别PPT制作难题!稿定PPT提供海量模板、AI智能生成、在线协作,助您轻松制作专业演示文稿。职场办公、教育学习、企业服务全覆盖,降本增效,释放创意!
- 53次使用
-
- Suno苏诺中文版
- 探索Suno苏诺中文版,一款颠覆传统音乐创作的AI平台。无需专业技能,轻松创作个性化音乐。智能词曲生成、风格迁移、海量音效,释放您的音乐灵感!
- 57次使用
-
- golang MySQL实现对数据库表存储获取操作示例
- 2022-12-22 499浏览
-
- 搞一个自娱自乐的博客(二) 架构搭建
- 2023-02-16 244浏览
-
- B-Tree、B+Tree以及B-link Tree
- 2023-01-19 235浏览
-
- mysql面试题
- 2023-01-17 157浏览
-
- MySQL数据表简单查询
- 2023-01-10 101浏览