MySQL索引

为什么使用B+Tree作为MySQL索引?

  • 二叉树和红黑树如果作为数据结构的话,就会导致树的深度很深,红黑树对比于二叉树只是可以自平衡
  • Hash表索引只适用于等值查询(就是根据一个key,定位到value),但是不适用与区间查询
  • B 树的所有节点既存放键(key) 也存放数据(data),而 B+树只有叶子节点存放 key 和 data,其他内节点只存放 key。
  • B 树的叶子节点都是独立的;B+树的叶子节点有一条引用链指向与它相邻的叶子节点。

聚集索引和非聚集索引

聚集就是索引和数据在一个文件中,在mysql中,主键索引其实就是聚集索引,一张表只有一个聚集索引

  • 聚集索引:索引中的数据物理存放地址和索引的顺序是一致的,插入数据直接向后插入
  • 非聚集索引:索引的逻辑顺序与磁盘上的物理存储顺序不同

联合索引和索引覆盖

select ID from T where k between 3 and 5
因为k是普通索引,在叶子节点存储的就是主键索引的ID,所以查询结果直接返回不需要回表,这就是索引覆盖

索引的删除与重建

  • 删除后主键索引重建,会去修改普通索引叶子节点存储的主键索引的值,性能消耗大
  • 删除和重建普通索引一般影响不大
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容