MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

这篇具有很好参考价值的文章主要介绍了MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

12.1.为什么没有选择二叉树?


二叉树是一种二分查找树,有很好的查找性能,相当于二分查找。
二叉树的非叶子节值大于左边子节点、小于右边子节点。
原因:
但是当N比较大的时候,树的深度比较高。数据查询的时间主要依赖于磁盘IO的次数,二叉树深度越大,查找的次数越多,性能越差。
最坏的情况是退化成了链表。

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?,mysql,b树,数据库

12.2.为什么没有选择红黑树?

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?,mysql,b树,数据库
红黑树相比于二叉树,它做了进一步的优化,它是一种自适应的平衡树,会根据插入的节点数量以及节点信息,自动调整树结果来维持平衡。
原因:
红黑树查找结尾的元素的时候,树的高度越高,增删改查所需要的IO次数也越多,会严重影响性能(相当于做了全表扫描)。

12.3.为什么没有选择B树?

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?,mysql,b树,数据库
B树和红黑树相比,其单节点可容纳多个数量,就能在很大程度上改善其性能,使B树的树高远远小于红黑树的高度。
原因&#文章来源地址https://www.toymoban.com/news/detail-857027.html

到了这里,关于MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面试官灵魂拷问:什么是MySQL索引?为什么需要索引?

    关系型数据库是一种采用关系模型存储数据的数据库系统。在关系型数据库中,数据被组织成一个或多个表格(也称为关系),每个表格包含多行记录,每行记录代表一组相关数据。每个表格都有一个定义该表格中数据的结构的模式,即表格的列和每个列的数据类型。关系型

    2024年02月09日
    浏览(63)
  • MySQl有哪些索引(种类)?索引特点?为什么要使用索引?

    普通索引:仅加速查询 唯一索引:加速查询 + 列值 唯一(可以有null) 主键索引:加速查询 + 列值 唯一(不可以有null)+ 表中只有一个 组合索引: 多列值组成一个索引 ,专门用于组合搜索,其效率大于索引合并 全文索引:对文本的内容进行分词,进行搜索 索引合并:使用

    2024年02月07日
    浏览(72)
  • mysql的主键索引为什么不能null

    这是一个非常奇怪且有趣的问题。可以通过官方文档进行解读 https://dev.mysql.com/doc/refman/5.7/en/glossary.html A special value in SQL, indicating the absence of data. Any arithmetic operation or equality test involving a NULL value, in turn produces a NULL result. (Thus it is similar to the IEEE floating-point concept of NaN, “not

    2024年02月14日
    浏览(75)
  • MySQL为什么采用B+树作为索引底层数据结构?

            索引就像一本书的目录,通过索引可以快速找到我们想要找的内容。那么什么样的数据结构可以用来实现索引呢?我们可能会想到:二叉查找树,平衡搜索树,或者是B树等等一系列的数据结构,那么为什么MySQL最终选择了B+树作为索引的数据结构呢?         要想

    2024年02月16日
    浏览(49)
  • MySQL为什么要使用B+树做索引?MySQL索引存储模型推演,B+树在MySQL的落地形式

    user_innodb这张表里有4个字段,id,name,gender,phone。 当这张表有500万条数据,在没有索引的name字段上执行一条where查询: 如果name字段上有索引呢?我们在name字段上面创建一个索引,再来执行一下查询: 我们再来执行一下select语句。 我们会发现,有索引的查询和没有索引的

    2024年02月16日
    浏览(56)
  • MSQL系列(十二) Mysql实战-为什么索引要建立在被驱动表上

    Mysql实战-为什么索引要建立在被驱动表上 前面我们讲解了B+Tree的索引结构,也详细讲解下 left Join的底层驱动表 选择原理,那么今天我们来看看到底如何用以及如何建立索引和索引优化 开始之前我们先提一个问题, 为什么索引要建立在被驱动表上 ? 1.建表及测试数据 我们先

    2024年02月08日
    浏览(49)
  • MySQL 索引为什么使用 B+ 树,而不使用红黑树 / B 树 ?

    首先 B 树和 B+ 树 都是多叉搜索树,然后我们先来观察一下 B+ 树和 B 树的数据结构: B+ 树的数据结构实现  B 树的数据结构实现 【B+ 树相较于 B 树的优势】 1. IO 次数更少(查询效率更高)         B+ 树的非叶子节点不存放实际的数据,仅存放索引,因此数据量相同的情况

    2024年02月12日
    浏览(43)
  • 为什么聊天机器人界面不是未来

    ​ 比如: 0 按时上下班,用固定时间长度获取价值 1 创业,用非线性时间,获取真实价值 0-1 之间有无限多种状态 shadow ChatBot目前的交互界面有非常多值得被改进的体验机会。最近看到一篇非常有启发性的文章,分享给大家。 核心观点来自于文章: https://wattenberger.com/though

    2024年02月03日
    浏览(52)
  • 为什么字节大量用GO而不是Java?

    见字 如面,我是军哥。 我看很多程序员对字节编程语言选型很好奇,为此我还特地问了在字节的两位4-1的技术大佬朋友,然后加上自己的思考,总结了一下就以下 2 个原因: 1、 选型上没有历史包袱 字节的早期的程序员大多来自于百度、360,本身就是 php / c++ 的背景,一开

    2024年02月08日
    浏览(61)
  • 为什么DNS使用UDP而不是TCP详解!

    DNS(Domain Name System)使用UDP(User Datagram Protocol)而不是TCP(Transmission Control Protocol)的主要原因是出于性能和效率的考虑。下面详细解释为什么DNS选择使用UDP协议: 小型请求和快速响应:DNS查询通常是小型请求,仅需要几个字节的数据传输。UDP是无连接的协议,它不需要在通

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包