目录

1.索引是什么:索引是帮助MySQL高效获取数据的排好序的数据结构

2.索引未采用数据结构

3.索引的数据结构

3.MyISAM存储结构

4.InnoDB存储结构

5.联合索引底层数据结构


1.索引是什么:索引是帮助MySQL高效获取数据的排好序的数据结构

2.索引未采用数据结构

1.二叉树(没有采用)原因:二叉树存在单边增长,树的高度高,效率低

2.红黑树(没有采用)原因:红黑树高度原因,效率也很低

3.hash表(没有采用)原因:不能实现范围查找,hash值没办法支持排序,组合索引会将几个字段合并hash,没办法支持部分索引,hash冲突的概率也会非常大。

哈希索引基于哈希表实现,只有精确索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码,哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希存储在索引中,同时在哈希表中保存指向每个数据的指针。

哈希索引中存储的是:哈希值+数据行指针 

4.B-Tree(没有采用)原因:范围查询效率低如图

如何 走 混合索引 什么是混合索引_数据库索引

当查询大于5的元素时,当找到5后,因此要找,7,9,11,13,14,不得不从根节点遍历,所以效率低。

3.索引的数据结构

B+Tree(B-Tree变种)

※非叶子节点不存储data,只存储索引,可以放下更多索引

※顺序访问指针,提高区间访问的性能

如何 走 混合索引 什么是混合索引_字段_02

3.MyISAM存储结构

索引文件和数据文件分离的

如何 走 混合索引 什么是混合索引_索引_03

4.InnoDB存储结构

主键采用整型自增可以降低,添加元素时维护B+的概率,维护B+会很耗时

如何 走 混合索引 什么是混合索引_数据库索引_04

5.联合索引底层数据结构

先根据第一个字段排序,第一个字段相同按照第二个字段排序,以此类推。

如何 走 混合索引 什么是混合索引_索引_05