MySql索引结构

二次信任 提交于 2019-12-04 05:59:25

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

B Tree 结构

  • 叶子节点具有相同的深度,叶子节点的指针为空,
  • 所有索引元素不重复,
  • 叶子节点的数据从左往右递增排列

B+Tree 索引

  • 非叶子节点不存储data,只存储索引,可以放更多索引
  • 叶子节点包含所有的索引字段,
  • 叶子之间使用指针链接(单向),提高区间访问性能

MySQL所使用的B+Tree索引,经过了改造,叶子节点之家使用双向指针链接
默认一个节点大小为16kb

MyISAM 存储引擎
非聚集索引,索引文件和数据分离,叶子节点里面data,存储的是数据地址

InnoDb 存储引擎
主键索引属于聚集索引,叶子节点data里面包含了完整的数据记录  
非主键索引属于非聚集索引,为了数据的一致性和节省存储空间,叶子节点data里面存储了主键ID

Hash 索引
根据查询key值,通过hash算法,以及hash表,直接可以定位到数据存储的地址,效率非常高,不受数据量影响
不支持模糊查询,不支持范围查询,不支持排序

联合索引结构
按照创建联合主键几个字段的顺序进行排序,组合保存在B+Tree的叶子节点

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!