MySQL索引的数据结构

MySQL索引的数据结构主要有B+树哈希表

对应的索引分别为B+树索引和哈希索引。

InnoDB引擎默认的索引类型为B+树索引

B+树索引

B+树是基于B树叶子节点顺序访问指针进行实现。

它具有B树的平衡性,并且通过顺序访问指针来提高区间查询的性能。

在B+树中,节点中的key从左到右递增排列

如果某个指针的左右相邻key分别是key[i]和key[i+1], 则该指针指向节点的所有key大于等于key[i]且小于等于key[i+1]。

进行查找操作时,首先在根节点进行二分查找,找到key所在的指针。然后递归地在指针所指向的节点进行查找。直到查找到叶子节点,然后在叶子节点上进行二分查找,找出key所对应的数据项。

MySQL数据库使用最多的索引类型是BTREE索引,底层是基于B+树数据结构来实现的。

哈希索引

哈希索引是基于哈希表实现的。

对于每一行数据,存储引擎会对索引列进行哈希计算得到哈希码

并且哈希算法要尽量保证不同的列值计算出的哈希码值是不同的,将哈希码的值作为哈希表的key值,将指向数据行的指针作为哈希表的value值

这样查找一个数据的时间复杂度就是O(1), 一般多用于精确查找。

参考资料:MySQL索引的数据结构

你可能感兴趣的:(MySQL,mysql,数据结构,数据库)