mysql索引

索引的本质是什么?

  • 索引是帮助mysql高效获取数据的排好序的数据结构
  • 索引的数据结构有“二叉树”,“红黑树”,“Hash表”,“B-Tree”

为什么索引使用的是B-Tree

  • 如果使用二叉树作为数据结构,而某一个数据列刚好是单边增长,那么二叉树将会逐渐变成一个链表。当对这个数据列执行查询时,相当于没有使用索引,因为链表的优势在于插入和删除,而查询是非常慢的。
  • B-Tree叶节点具有相同的深度
  • B-Tree叶节点的指针为空
  • 节点中的数据索引从左到右递增排列

B+Tree(B-Tree变种)

  • 非叶子节点不存储数据,只存储索引,可以放更多的索引
  • 顺序访问指针,提高区间访问的性能

mysql的索引使用的是什么数据库结构?

  • 使用的B+树
  • B+树的高扇出性,导致树的层高一般在2~4层,也就是说查询某一个键值只需要2~4次IO操作就可以。
  • B+树是高度平衡的,叶子节点中顺序存放所有数据。

聚集索引

  • 聚集索引是按照每张表的主键构造一个B+树,同时叶子节点中存放的就是整张表的行记录数据。叶子节点也称为数据页。聚集索引能够非常快的针对范围值查询数据。

你可能感兴趣的:(mysql索引)