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

MySQL中的B+树索引经验总结

一、什么是B+树

B+树是一种二叉树,由二叉查找树,平衡二叉树,B树演化而来。
在这里插入图片描述
请看上图

B+树的特点:

1)非叶子节点不存放数据,只存放键值,数据都存放在叶子节点中。
2)叶子节点都在同一层,且数据都是从左到右顺序存储的。左叶子节点的索引键值一定小于其根节点的键值,右叶子节点索引键值一定大于其根节点的键值。
3)叶子节点之间通过链表指针关联,使得范围查找更加快速,因为可以从一个叶子节点直接遍历到另一个叶子节点。

二、InnoDB中的B+树索引

InnoDB中的B+树索引分为两种,聚集索引和辅助索引(非聚集索引)。两者之间数据结构一样只是存放的数据不一样。

1) 聚集索引

聚集索引是根据主键创建的一棵B+树,聚集索引的叶子节点存放了表中的所有记录。因此所有数据都是根据主键进行排序后顺序存放。
所以根据主键查找后,可以直接到达叶子节点获取数据。

2)辅助索引

辅助索引是根据索引键值创建的一棵B+树,和聚集索引不同的是,辅助索引构建的B+树只存放索引键值和对应数据的主键。
因此根据辅助索引查找后,还需要根据主键重新回表获取数据。

所以,只有主键是聚集索引,其他创建的索引等都是辅助索引。

三、建立索引的原则

1)经常用作条件查询、分组、排序的字段适合建立索引
2)唯一性高的字段比唯一性低的字段更适合建立索引
3)索引不宜过多,会影响数据插入效率
4)频繁更新的字段不适合做索引,频繁更新索引需要不断更新B+树,降低更新效率

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

相关文章:

  • PosterRender 实现微信下程序 分享商品生成海报
  • STM32Cubemx-H7-8-维特科技WT61C-TTL陀螺仪获取XYZ角度
  • 抽象工厂模式的C++实现示例
  • 23天 - 线程和进程有什么区别?进程之间的通信方式有哪些?进程的调度算法你知道吗?
  • uv pip install -r requirements.txt-报错,python版本过低
  • 大数据学习(67)- Flume、Sqoop、Kafka、DataX对比
  • 合并pull request的过程
  • 用户模块——握手验证
  • 解决 Linux /dev/mapper/ubuntu--vg-ubuntu--lv 磁盘空间不足的问题
  • Navicat安装流程
  • Linux 命名管道
  • 【AI】技术人如何系统学习AI大模型应用开发?
  • 2025高频面试算法总结篇【持续更新中】
  • 2025年1月-3月Java面试题、笔记、简历模版汇总(需要自取)
  • Linux--操作系统/进程
  • highlight.js
  • 基于微信小程序开发的宠物领养平台——代码解读
  • DataX的python3使用
  • Android Dagger 2 框架的注解模块源码分析(一)
  • 【QT】-解析打包json
  • Java 8 + Tomcat 9.0.102 的稳定环境搭建方案,适用于生产环境
  • Linux centos 7 grub引导故障恢复
  • celery入门
  • 探讨Deveco Studio常见问题及解决方案,分享快速排障方法
  • Android Framework 之了解系统启动流程一
  • Shp文件转坐标并导出到Excel和JSON(arcMap + excel)
  • NCCL如何打印XML拓扑文件,操作说明和源码展示
  • VIC水文模型
  • 打靶练习-W1R3S、JARBAS、SickOS、Prime
  • 【每日学点HarmonyOS Next知识】tab对齐、相对布局、自定义弹窗全屏、动画集合、回到桌面