普通二叉搜索树当索引的劣势:

(1)每个节点占用的空间太少,不能很好的利用磁盘的预读性

(2)数据不规律的话,很可能形成链表

(3)频繁IO

b树当索引机制相比于二叉树的优势和劣势:

(1)每个节点有关键字、数据区、子节点指针

(2)每个节点存储的数据多,可以充分的利用预读性(mysql一个磁盘页默认是16KB)

b+树相比于b树的优势:

(1)因为每个节点不存数据区(内存地址)了,所有每个节点的度可以更多,这样树的高度可以变矮很多,更利于查找

(2)数据区都在叶子节点存着,一条链表,在排序时更有优势

(3)b+树的节点变换时,是分裂形式而不是b树的左旋转(右旋转)形式,效率高

(4)但是B+树有个缺点,就是不论查什么数据都必须要遍历到叶子节点才可以拿到真实的数据地址

myisam和innodb的索引机制的不同:

(1)前者的索引和数据区是分成两个文件来分别存储的,后者的数据区是和主键索引放在一起的

(2)前者的每个索引都是单独的一棵树,每个索引都存有真实的数据区地址,而后者只有主键索引树才存有真实地址,而辅助索引树的叶子节点存的是主键的关键字

(3)前者每个索引树都可以独当一面,而后者的辅助索引树就算找到了对应的关键字,也还是要到叶子节点拿到主键的关键字,然后再去主键索引树遍历

(4)前者没有默认的主键索引,而后者有默认的主键索引(聚集索引)(不明确指定的情况下),后者除了主键索引是聚集索引,其他都是非聚集索引

转载于:https://www.cnblogs.com/Booker808-java/p/10928509.html

b+tree索引在MyIsam和InnoDB的不同实现方式相关推荐

  1. MySQL聚集索引详解_MySQL innodb 聚集索引的概念与使用教程

    聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同.一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个. 在MySQL中,InnoDB引擎表是( ...

  2. 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...

  3. MySQL引擎之MyISAM,InnoDB,Btree与B+tree

    目录: MyISAM与InnoDB模块 Btree模块 B-tree与哈希索引的区别 一:MyISAM: 创建一个myisam存储引擎的表的时候会出现三个文件 tb_demo.frm,存储表定义: 2 ...

  4. MySQL中myisam和innodb的主键索引有什么区别?

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...

  5. 【MySQl】MyISAM和InnoDB索引对比

    [MySQl]MyISAM和InnoDB索引对比 部分内容转自:http://www.2cto.com/database/201211/172380.html 比较好的文章:http://www.cn ...

  6. mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/21aspnet/article/details/89303988 聚集索引和非聚集索引以及MySQL的 ...

  7. mysql myisam 主键关联_MySQL中myisam和innodb的主键索引有什么区别?

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...

  8. 主键索引和辅助索引的区别(MyISAM和InnoDB)

    1. MyISAM索引实现: 概述: MyISAM的索引文件仅仅保存数据记录的地址.在MyISAM中,主索引和辅助索引在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复. ...

  9. MyISAM和InnoDB的索引在实现上的不同

    1 MyISAM只把索引载入内存,数据缓存依赖于操作系统,InnoDB把索引和数据都载入内存缓冲 2 MyISAM数据库中的数据是按照插入的顺序保存,在每个索引节点中保存对应的数据行的地址,理论上说主 ...

最新文章

  1. SD-WAN应用可见性的流量对称
  2. 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
  3. 项目: flappy bird
  4. C#中通过list的GetRange方法对list进行按执行长度截取并拆分
  5. Properties文件的XML格式
  6. 某项目的双代号网络图如下所示_2019一级建造师项目管理知识点大全3
  7. Android 系统(252)---Android:BLE智能硬件开发详解
  8. python-threading.Event实现事件功能--汽车过红绿灯(转载)
  9. 浙江工业大学校赛 XiaoWei的战斗力
  10. 阿里巴巴MaxCompute亮相VLDB2017
  11. 程序员工资真的高吗?
  12. Halcon区域形状特征-area_center、area_holes、select_shape、inner_circle和smallest_rectangle2算子
  13. OpenCV (c++)使用KDTree时,得到正确结果后报Segmentation fault (core dumped)
  14. Google Bigtable 中文版
  15. 圣科鲁兹 计算机专业,加州大学圣克鲁兹分校计算机工程硕士专业 将发明创新融入到工业中!...
  16. 腾讯离职元老的内部邮件:马化腾的趣事
  17. iOS 获取网络时间
  18. 亚马逊正式发布Fire Phone 合同价199美元起
  19. 电力电子技术复习笔记2
  20. 教你用 Python 快速获取行业板块股,辅助价值投资

热门文章

  1. java使用重绘实现拖动_【Android】利用自己定义View的重绘实现拖动移动,获取组件的尺寸...
  2. android点滴9:模拟器中如何输入中文
  3. 想“跟”在后面?不是那么简单的事情
  4. 如何:在 Windows 窗体 ListView 控件中启用平铺视图 【转载】
  5. 发布文章自动上传图片并生成水印
  6. 请用旧版的 Scala-2.11 搭配 Spark-2.4.8 / hadoop-2.7
  7. 已修复的bug: 简书文章长标题换行异常,标题配图异常,首页配图异常
  8. dojo——AMD(二、AMD中class内部成员函数相互调用实现)
  9. 使用python制作ArcGIS插件(5)其他技巧
  10. 一、RabbitMQ安装