mysql索引底层数据结构与算法

1.索引的作用

索引是帮助MySQL高效获取数据的排好序的数据结构

索引数据结构

  •    二叉树
  •    红黑树
  •    Hash表
  •    B-Tree

 

 

 1.1B-Tree

  1. 叶节点具有相同的深度,叶节点的指针为空
  2. 所有索引元素不重复
  3. 节点中的数据索引从左到右递增排列   

 

 

1.2B+Tree(B-Tree变种)

 

  1. 非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
  2. 叶子节点包含所有索引字段
  3. 叶子节点用指针连接,提高区间访问的性能

 

 

 

1.3hash

  1. 对索引的key进行一次hash计算就可以定位出数据存储的位置
  2. 很多时候Hash索引要比B+ 树索引更高效
  3. 仅能满足 “=”,“IN”,不支持范围查询
  4. hash冲突问题

 

 2.MyISAM存储引擎索引实现

MyISAM索引文件和数据文件是分离的(非聚集)

 

 

 3.InnoDB

  • InnoDB索引实现(聚集)
  1. 表数据文件本身就是按B+Tree组织的一个索引结构文件
  2. 聚集索引-叶节点包含了完整的数据记录
  3. 为什么建议InnoDB表必须建主键,并且推荐使用整型的自增主键?
  4. 为什么非主键索引结构叶子节点存储的是主键值?(一致性和节省存储空间)

 

             

 

 

 

联合索引的底层存储结构长什么样?

 

posted @   lem985  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示