mysql索引为什么用B+树不用,B树或者红黑树

ops/2025/2/22 11:41:00/

MySQL 选择 B+ 树作为索引结构,而不是 B 树或红黑树,主要原因如下:

1. 磁盘 I/O 优化

  • B+ 树:节点存储更多键值,树的高度较低,减少了磁盘 I/O 次数,适合处理大规模数据。

  • B 树:虽然也能减少磁盘 I/O,但每个节点存储数据,导致节点能容纳的键值较少,树的高度相对较高。

  • 红黑树:树的高度较高,磁盘 I/O 次数多,不适合大规模数据存储。

2. 范围查询效率

  • B+ 树:叶子节点通过指针连接,范围查询时只需遍历叶子节点,效率高。

  • B 树:数据分布在各层节点,范围查询需要多次访问不同节点,效率较低。

  • 红黑树:范围查询效率也不如 B+ 树。

3. 顺序访问性能

  • B+ 树:叶子节点形成有序链表,适合顺序访问(如全表扫描)。

  • B 树:顺序访问需要跨层遍历,效率较低。

  • 红黑树:顺序访问效率同样不如 B+ 树。

4. 节点利用率

  • B+ 树:内部节点只存键值,能容纳更多键值,节点利用率高。

  • B 树:节点存储数据,键值较少,节点利用率较低。

  • 红黑树:每个节点存储的数据较少,利用率最低。

5. 插入和删除效率

  • B+ 树:插入和删除操作主要集中在叶子节点,效率较高。

  • B 树:插入和删除可能涉及内部节点,操作更复杂。

  • 红黑树:虽然插入和删除效率较高,但树的高度较高,磁盘 I/O 次数多。

总结

B+ 树在磁盘 I/O、范围查询、顺序访问和节点利用率等方面表现更优,特别适合数据库索引的需求。而 B 树和红黑树在这些方面不如 B+ 树,因此 MySQL 选择 B+ 树作为索引结构。


http://www.ppmy.cn/ops/160499.html

相关文章

C++ 设计模式-解释器模式

数学表达式解释器 示例需求 支持数字、变量、加减乘除运算支持函数调用(如 max(2,3))能够处理嵌套表达式(如 (x + 5) * max(y,10))完整代码实现 #include <iostream> #include <memory> #include <unordered_map> #include <vector> #include &l…

PWM(脉宽调制)技术详解:从基础到应用实践示例

PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例 目录 PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例学前思考&#xff1a;一、PWM概述二、PWM的基本原理三、PWM的应用场景四、PWM的硬件配置与使用五、PWM的编程…

常用加解密原理及实际使用

AES加解密 在Java中&#xff0c;可以使用javax.crypto包来实现AES-256加密和解密&#xff0c;使用java.security包来实现RSA-2048加密和解密。以下是一个简单的示例&#xff0c;展示了如何使用AES-256和RSA-2048进行加密和解密。 样例 import javax.crypto.Cipher; import j…

使用WebStorm开发Vue3项目

记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦&#xff01;?? 基本配置 打包工具&#xff1a;Vite 前端框架&#xff1a;ElementPlus 开发语言&#xff1a;Vue3、TypeScript、Sass 代码检查&#xff1a;ESLint、Prettier IDE&#xff1a;WebSt…

游戏引擎学习第113天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;优化的基本过程 在游戏编程中&#xff0c;优化是一个非常重要的学习内容&#xff0c;尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度&#xff0c;以及如何提升其性能。在这个阶段&#xff0c;已经…

LLaMA-Factory|微调大语言模型初探索(3),qlora微调deepseek记录

前言 上篇文章记录了使用lora微调llama-1b,微调成功,但是微调llama-8b显存爆炸,这次尝试使用qlora来尝试微调参数体量更大的大语言模型,看看64G显存的极限在哪里。 1.Why QLora? QLoRA 在模型加载阶段通过 4-bit 量化大幅减少了模型权重的显存占用。QLoRA 通过 反量化到 …

oppo,汤臣倍健,康冠科技,高途教育25届春招内推

oppo&#xff0c;汤臣倍健&#xff0c;康冠科技&#xff0c;高途教育25届春招内推 ①康冠科技 【职位】算法、软件、硬件、技术&#xff0c;结构设计&#xff0c;供应链&#xff0c;产品&#xff0c;职能&#xff0c;商务 【一键内推】https://sourl.cn/2Mm9Lk 【内推码】EVBM8…

【Java学习】多态

目录 一、方法相同 二、方法重写 1.概念 2.条件 三、向上转型 1.概念 2.方式 四、方法绑定 五、多态 一、方法相同 方法相同要求方法名相同、参数列表相同、返回值类型相同(与两方法修饰的访问限定符相不相同、静态非静态状态相不相同无关)&#xff0c;而且在子类与父…