mysql索引
2021-05-10 本文已影响0人
韩小禹
索引的本质是什么?
- 索引是帮助mysql高效获取数据的排好序的数据结构
- 索引的数据结构有“二叉树”,“红黑树”,“Hash表”,“B-Tree”
为什么索引使用的是B-Tree
- 如果使用二叉树作为数据结构,而某一个数据列刚好是单边增长,那么二叉树将会逐渐变成一个链表。当对这个数据列执行查询时,相当于没有使用索引,因为链表的优势在于插入和删除,而查询是非常慢的。
- B-Tree叶节点具有相同的深度
- B-Tree叶节点的指针为空
- 节点中的数据索引从左到右递增排列
B+Tree(B-Tree变种)
- 非叶子节点不存储数据,只存储索引,可以放更多的索引
- 顺序访问指针,提高区间访问的性能
mysql的索引使用的是什么数据库结构?
- 使用的B+树
- B+树的高扇出性,导致树的层高一般在2~4层,也就是说查询某一个键值只需要2~4次IO操作就可以。
- B+树是高度平衡的,叶子节点中顺序存放所有数据。
聚集索引
- 聚集索引是按照每张表的主键构造一个B+树,同时叶子节点中存放的就是整张表的行记录数据。叶子节点也称为数据页。聚集索引能够非常快的针对范围值查询数据。