位置: 编程技术 - 正文

Mysql 索引结构直观图解介绍(mysql索引数据结构有哪些)

编辑:rootadmin

推荐整理分享Mysql 索引结构直观图解介绍(mysql索引数据结构有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql索引实现原理,mysql索引实现原理,mysql索引背后的数据结构及算法原理,mysql索引结构图,mysql 索引的数据结构,mysql 索引 结构,mysql 索引 结构,mysql索引背后的数据结构及算法原理,内容如对您有帮助,希望把文章链接给更多的朋友!

一.模拟创建原始数据 下图中,左边是自己方便说明,模拟的数据。引擎为mysiam~ 右边是用EXCEL把它们随机排列后的一个正常仿真数据表,把主键按照1-再排列(不随机的话我在模拟数据时本来就是按顺序写的,再加索引看不大出这个索引排序的过程) 也就是说右边的数据,使我们要测试的原始数据,没建索引前是这样排序的,后边所有的数据都是以这个为依准进行的,这样更好看索引生成后的排序效果。 该表有4个字段(id,a,b,c),共行数据

二.创建索引 a 如下图,当创建索引a以后,在该索引结构中,从原来的按照主键ID排序,变成了新的规则,我们说索引其实就是一个数据结构。则建立索引a,就是新另建立一个结构,排序按照字段a规则排序,第一条为主键ID为1代表的数据行,第二条ID=3的数据行,第三条ID=5代表的数据行。。。

新排序主键ID(以ID代表他们这行的数据):1 3 5 6 9 2 4 7 8 不难发现,当字段a相同时,他们的排列 前后主键ID来排,比如同样是a=1.1的值,但是他们的排序是ID值为1,3,5,6。。对应的行,和主键ID排序顺序相近。

三.创建索引 (a,b) 如下图,当创建联合索引(a,b)以后,在该索引结构中,从原来的按照主键ID排序,变成了新的规则,排序规则先按照字段a排序,在a的基础上在按照字段b排序。即在索引a的基础上,对字段b也进行了排序。

新排序主键ID(以ID代表他们这行的数据):6 7 1 3 2 4 8 5 9 不难发现,当字段a,b值都相同时,他们的排列前后,也是由主键ID决定的,比如同样是a=1.1,b=2.1的行(,6,),但是他们的排序是6,,。 字段(a,b)索引,先按a索引排序,然后在a的基础上,按照b排序 6 7 1 3 2 4 8 5 9

四.创建索引 (a,b,c)

Mysql 索引结构直观图解介绍(mysql索引数据结构有哪些)

字段(a,b,c)索引,先按a,b索引排序,然后在(a,b)的基础上,按照c排序

新排序主键ID(以ID代表他们这行的数据): 6 7 1 3 2 4 8 5 9

五.结论:

和上一篇Mysql-索引-BTree类型【精简版】讲的一样,B-TREE树的最后一排叶子节点,从左往右排,就是按照这个顺序的,不同索引不同顺序。

我们知道,读取数据的一个过程(相当于找房间的过程),如果有索引(房间登记表),先读取索引的数据结构(因为它数据小读取快嘛),在其结构的叶子节点,找到真实物理磁盘的存放位置(相当于找到门牌号码了),然后拿着门牌号码去磁盘里直接拿数据,这就是一个读取数据的过程。如果没索引那你就相当于不知道目的地,挨个房间找吧。

当没有索引时,其实主键ID就是他们的索引,按照主键ID从小到大的规则排列; 当有所索引时,索引a,联合索引(a,b),联合索引(a,b,c)三者的对应3个B+TREE结构上,其叶子节点末尾指向的物理磁盘是是不一样的。

结论: 1.如果没有建立索引,是按照ID主键递增排列 2.当建立了索引a,会生成一个新的结构索引(B+TREE)用来记录新的一个结构规则,方便快速查找 3.当建立索引a,索引ab,索引abc,他们三个对应的数据排序是不一样的 4.索引abc,是兼顾了索引ab,索引a的,所以有前者时后两者可以不用建立 5.当建立了索引,非索引的列默认是按照ID递增来排序的

当新insert一条数据时,存储数据的同时,也会维护此表的一个索引,把它安放到一个合适的位置。解释了为什么再数据量特别大的时候索引可能会有负面影响,在被索引的表上INSERT和DELETE会变慢,频繁的插入删除数据同样会对维护索引消耗时间,瓶颈多少&#;&#;W&#; 这里是简单介绍一个索引的存储原理。

MySQL索引背后的数据结构及算法原理详解 摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各

MySQL误操作后快速恢复数据的方法 摘要:利用binlog闪回误操作数据。基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delet

MySQL 的 + 条最佳实践 数据库操作是当今Web应用程序中的主要瓶颈。不仅是DBA(数据库管理员)需要为各种性能问题操心,程序员为做出准确的结构化表,优化查询性能和编

标签: mysql索引数据结构有哪些

本文链接地址:https://www.jiuchutong.com/biancheng/349613.html 转载请保留说明!

上一篇:mysql全量备份、增量备份实现方法(mysql 全量备份)

下一篇:MySQL索引背后的数据结构及算法原理详解(MySQL索引背后的数据结构及算法原理)

  • 服装加工费税收编码
  • 开出销项发票和进项票成本有出入怎么办?
  • 在途物资什么科目
  • 母公司合并子公司会计处理
  • 销售部的招待费计入什么费用
  • 公司成立前发生业务 成立后开票
  • 没有认证怎么办
  • 金蝶美金账户怎么开
  • 增值税需要结转到本年利润吗
  • 购入固定资产一次性扣除
  • 出售旧房及建筑物计算土地增值税
  • 消费税征收环节下划的影响
  • 债务豁免的会计分录
  • 加油站销售加油卡是否征收增值税
  • 医院计提坏账准备分录
  • 办事处可以办理临时身份证吗
  • 办公室租金相关法规
  • 劳务派遣公司一般纳税人税率是多少
  • 15-算
  • 建筑工程发票是增值税专用发票吗,可以抵扣吗
  • 上月有留抵的进项税额本月会计分录
  • 金蝶账可以修改建账日期吗
  • 用友t3怎么增加现金流量项目
  • w10系统搜索
  • win 11 发布
  • 在建工程领用原材料需要进项税转出吗
  • 私车公用的费用可以抵税吗现在
  • mac如何修改照片的尺寸大小
  • php 回调函数
  • php多线程怎么实现
  • window10为什么没有本地用户和组
  • 企业车辆按揭的利弊分析
  • 返点收入怎么会计分录
  • 简易计税办法和一般计税办法
  • 1050ti 4g显卡
  • 跨年租赁费如何处理
  • php删除数组中重复的元素
  • 单位未足额缴纳社保可以补交几年
  • 虚拟机是什么意思
  • 销售货物代垫的运费会计分录
  • 增值税达不到起征点账务处理
  • 用户登录php
  • 微信小程序项目中app.js文件是全局样式文件
  • 异步函数执行顺序
  • setenforce 0命令
  • 过路费发票抵扣2023新规定
  • pycharm cant find main
  • 不能抵扣的抵扣了怎么办
  • 融资租赁各方
  • 个税中的免税收入都包括什么
  • SQL server 2008安装程序遇到以下错误 sku
  • 本月应计提折旧额
  • 教育培训行业人员
  • 月底主营业务成本会计分录
  • 投资性房地产公允价值模式账务处理
  • 应交税金为负数应该填在资产负债表哪一栏
  • 利息收入如何开票
  • 银行扣款后又退回怎么办
  • 年底本年利润结转错了怎么调
  • 为什么预付账款是资产
  • 不是公司股东的情况说明模板
  • 补缴以前年度企业年金可以税前扣除吗
  • 怎样贴发票之类的报销单据
  • 金税盘清卡怎么操作视频
  • 代理记账许可证查询
  • ghost装机顺序
  • ubuntu 网络设置命令
  • ctrl+的作用
  • windows8无线网络
  • win10系统中断怎么解除
  • win8不能安装软件
  • android应用程序的主要语言是java
  • jquery可以实现哪些效果
  • 深入解读2023年一号文件
  • python中如何获取列表中位数
  • 学习JavaScript事件流和事件处理程序
  • 使用jQuery给input标签设置默认值
  • jquery-easyui-1.3.3
  • Python字符串的常用方法
  • 房屋租赁管理部门制发的《房屋租赁证》
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设