首页 > 数据库 >用生动的语言讲mysql索引机制与B+树形象化理解

用生动的语言讲mysql索引机制与B+树形象化理解

时间:2024-03-25 10:15:07浏览次数:26  
标签:形象化 Dad 结点 mysql 是不是 链表 索引 号数

索引,index,是什么呢,假如说,没有索引,比如你要点名,你就得挨个问,你是不是某某某,效率奇低,但是,当他们有了独一无二的号数或者名字,就可以免于追寻,一觅即中,这就是索引存在的意义

但是,凡事有利有弊,索引增加了查询的效率,但是却降低了增删改的效率,比如说,班级加入一名新同学,你还要给他一个号数,比如你生了一个孩子,你还要给他取名字,是不是比较麻烦呢,比如说,你的班级是按照分班成绩来给号数,那你退学了或者成绩下滑了,是不是还得给你改号数呢,号数是不是也占用你脑子的空间呢,对吧

好,接下来看看几种不同索引

索引有很多种,先从二叉树开始

二叉树嘛,就是比你小的放你左边当儿子,比你大的放你右边,很有秩序地排列下来,咋一看还挺方便捏,那细想一下,假如说,我一下子插入一串有序的数据,阁下又该如何应对

是吧,是不是跟链表就没区别了,再者,假如数据超级无穷多,你二叉树只能带两个子节点,是不是也心有余而力不足?

所以引入红黑树,但依旧存在数据量大处理检索能力的问题

所以捏,今天主角B树,B+树登场

B树就是,一个结点可以有n个键,n+1个分支

比如 a b,两个数据之间的分支下的结点,数据范围介于[a,b]

那是怎么造树的呢,比如你某个结点,设定4个key,要插入第5个key的时候,假设插入成功,那么这5个key的中间值,就飞升,成为父结点,左边分支是两个比他小的孩子,右边分支是两个比他大的孩子

好,这就解决了MySQL的检索以及有序插入问题,那能不能在此基础上更快更强呢

这就引入了B+树


依旧是老规矩,中间值飞升成为Dad,但是,Dad舍不得孩子呀,于是留了一个实体,依旧和孩子,们在一起,那就疑惑了,那你飞上去还有什么意义呢,好,这就是B+树有意思的一个点Dad只是索引,而不是数据,数据是孩子们,就是比如你Dad是10,飞升上去,那我是不是可以根据你这个10,来找你左边右边的数,很快地找到呢,然后孩子们也都以链表相连接
,绿框是数据,红框是索引

事情还没结束,MySQL还对B+树进行了优化


增加了访问相邻节点的指针,可以理解为绿框中构建了双向环形链表,有利于排序捏

标签:形象化,Dad,结点,mysql,是不是,链表,索引,号数
From: https://www.cnblogs.com/cjtaaa/p/18093750

相关文章

  • djangoCIA报价平台的设计与实现(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,互联网已经深入到我们日常生活的方方面面。在众多的应用场景中,报价系统作为商业交易的重要环节,扮演着至关重要的角色。尤其是在CIA(Ce......
  • djangoAndroid共享停车位(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着城市化进程的加速,汽车已成为人们日常生活中不可或缺的交通工具。然而,在许多城市中,由于停车位数量有限,停车难成为了一大问题。为了解决这一问题,共享停车......
  • cmd窗口远程连接mysql数据库命令
    注意点:电脑需要先安装好mysql数据库(不等同于安装好Navicat工具,是要安装好MySQL数据库)1、同时点击win+R,输入cmd之后点击回车,进入cmd窗口;2、直接在命令行中输入mysql-h数据库ip地址-P端口号-u用户名-p比如:mysql-h192.168.5.116-P3306-uroot-p3、点击回车,会出......
  • 【附源码】django计算机毕业设计web的诗词信息管理平台(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在当今信息化时代,诗词作为中华民族传统文化的瑰宝,承载着丰富的历史和文化价值。然而,随着科技的发展和生活节奏的加快,人们对于诗词的接触和传承逐渐减少,尤其......
  • 【附源码】django计算机毕业设计web技术的养老服务平台(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义养老服务平台开发设计背景:随着社会老龄化的加剧,养老问题逐渐成为社会关注的热点。老年人作为社会的重要组成部分,他们的生活质量和幸福感直接关系到社会的和谐与稳定......
  • 基于springboot+vue+Mysql的留守儿童爱心网站
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示系统首页界面宣传新闻界面志愿活动界面爱心捐赠界面个人中心界面用户注册界面管理员登录界面......
  • MySQL索引介绍
    MySQL索引介绍01MySQL的索引是什么?在关系数据库中,索引是一种单独的、物理的数对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。我们都知道,MySQL需要支持持久化,它把数据存储......
  • MySQL
    MySQL讲讲mysql的索引为什么要用B+树?B+树为什么更矮胖?有序性:B+树是一种有序的树形结构,可以快速定位和范围查询数据。在B+树中,所有的叶子节点都按照键值的大小顺序连接在一起,这使得范围查询变得高效。同时,有序性也使得B+树在范围查询、排序和分组等操作上更加高效。平衡性:B......
  • 第十篇:MySQL内置函数(字符串函数|数值函数|日期函数|流程函数)
    函数就是一段写好的、具有特定功能的代码,可以被另一段程序直接调用,只要拥有编程基础。想必对函数并不陌生本篇将系统性地记录MySQL中常用的内置函数,主要分为这四大类,字符串函数数值函数日期函数流程函数一,字符串函数(一)concat(S1,S2,...Sn)<-拼接作用描述将传入......
  • 【附源码】JAVA计算机毕业设计音乐豆瓣(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,音乐作为人们日常生活中不可或缺的一部分,其获取与分享方式也在不断地变革。传统的音乐获取途径,如购买唱片或到实体音乐店挑选......