当前位置: 首页 > news >正文

MySQL 之索引为什么选择B+树

        说到索引,我们首先得知道索引是什么?MySQL中的索引是一种数据库技术,用于提高数据库表中的数据检索速度。索引类似于书籍的目录,可以快速定位到数据的位置,而不需要扫描整个表。索引可以极大地加速数据的检索速度,尤其是在大型数据库表中。

        那我们再来谈谈,索引是通过什么结构怎么实现的。我们能想到一下几种搜索效率较快的结构:二叉搜索树,哈希表,红黑树、N叉树。那接下来说说为什么这些结构都不太适合索引使用。1.哈希表:哈希表搜索的时间复杂度是 O(1),查询速度也快,但是哈希表通过哈希函数将键映射到存储位置,但该过程不保证数据的物理存储顺序与键的逻辑顺序一致。范围查询需要按顺序访问键值,而哈希表的无序性导致无法高效遍历连续键值。所以哈希表并不支持范围查找。2.二叉搜索树:二叉树的中序遍历是一个有序数组,但在极端条件下,就退化成了队列,失去了优势。3.红黑树:虽然是平衡或近似平衡的,但是毕竟是二叉结构,在检索数据时,由于表中的数据都是存在磁盘中的,所以每次范围某个节点的子节点时都会发生一次磁盘IO(磁盘I/O(Input/Output)指计算机系统中磁盘的输入输出操作,包括从磁盘读取数据(输出)和向磁盘写入数据(输入),是数据存储与传输的核心过程,直接影响系统性能)。4.N叉树:N叉树解决了树高的问题,意味着在相同数据量的情况下可以减少 IO 的次数,从而提高效率。但是不是最佳的结构。

        此时,我们来介绍B+树:

通过以上图示可知,3个数据可以分成3个区间,[5,28), [28,65), [65,+∞)这三个区间,以此规律继续分下去。B+ 树的特点:1.能够保持数据稳定有序,插入与修改有较稳定的时间复杂度 2.非叶子节点作为索引层,用于指导数据查找方向,每个节点包含多个索引键(通常为有序链表结构),每个索引键对应一个子节点,非叶子节点仅仅具有索引作用,不存储数据。所有叶子节点存储的是主键KEY或者具体数据。3.所有叶子节点构成一个有序链表。

http://www.dtcms.com/a/503336.html

相关文章:

  • seo网站页面f布局如何做企业文化培训
  • C语言-数组
  • 01-(JavaWeb)前端部分(HTML+CSS)
  • Sendable装饰器的使用
  • 产品经理做网站东莞网站搭建
  • vue3中的watch使用
  • SQL Server安全配置全面检查与优化方案
  • 唐山市城乡建设局网站哪个网站做的系统好用吗
  • 包头市建设厅官方网站开网店详细步骤流程
  • 什么是前端、后端与全栈开发,Qt属于什么?
  • Solidity 合约超限问题及优化策略:以 FHEFactory 为例
  • 第一届贵州理工校赛--ez-uploadez-upload-plus
  • 聊聊 Unity(小白专享、C# 小程序 之 联机对战)
  • ava编辑一个小程序操作教程分享一下C++
  • Java Web 程序在 Linux 上的部署
  • HTTP Client/Server 实践:cpp-httplib使用
  • 项目招商网站大全河北智慧团建网站
  • 量化交易的开源框架
  • 【Linux系统编程】4. Linux权限
  • 个人主页网站制作免费融资平台哪家好
  • week6
  • ZigBee中的many-to-one和link status(3)
  • 大型网站多少钱佳源房地产最新消息
  • Linux Bash(一)
  • 【Redis】哨兵与对脑裂的情况分析
  • 49.词向量:把文字变成数字
  • 【pulldown-cmark】创建自定义分支
  • python 网站开发流程图网站首页被k还有救吗
  • TsingtaoAI受邀参加HICOOL2025全球创业者峰会项目对接会
  • windows10激活解决办法