mysql索引的数据结构(Innodb)

首选要注意,这里的数据结构是存储在硬盘上的数据结构,不是内存中的数据结构,要重点考虑io次数.

一.不适合的数据结构:

1.Hash:不适合进行范围查询和模糊匹配查询.(有些数据库索引会使用Hash,但是只能精准匹配)

2.红黑树:可以范围查询和模糊匹配,但是和硬盘io次数比较多.

二.为数据库量身打造的数据结构(B+树):

1.B树(又称B-树):

a)本质上是N叉搜索树:一个节点保存多个key,N个key延展出N+1个节点(划分出N+1个区间).

从根节点出发,依次往下查找.

b)相较红黑树的优点:每个节点都可以存放多个元素,当总的元素个数确定的时候,节点数大大降低了,树的高度也降低了,查询时io次数减少了,查询效率提高了.

c)拆分和合并:在进行插入和删除元素的时候,一个节点可以存多个元素,但也不能没有限制的存,当达到一定数量的时候,就要把这个节点拆分,把这个节点中的一部分元素以数的子节点的方式来进行重新组织.

2.B+树:

特点:

a)N叉搜索树,但是N个元素分出N个区间节点最后一个元素就是最大值.

b)父节点的元素在子节点中重复出现(以最大值的身份).,叶子节点这一层,包含了所有元素.

c)叶子节点按照双向链表的方式,收尾相连,快速地找到上一个/下一个元素,方便范围查询.

优势:

a)特别擅长范围查询.

b)所有的查询最终会落到叶子节点,比较次数均衡,查询时间稳定.

c) 由于叶子节点上是完整的元素全集,因此表的每一行元素的其他列,都可以保存到叶子节点上,而非叶子节点,指存储构件索引的id就可以了.因此,非叶子节点的存储空间消耗非常小,可以在内存中缓存一份,这样减少了硬盘io次数,提高了查询效率.

相关推荐
txzrxz3 分钟前
结构体排序,双指针,单调栈
数据结构·算法·双指针算法·单调栈·结构体排序
wWYy.8 分钟前
算法:二叉树最大路径和
数据结构·算法
万象.12 分钟前
redis持久化:AOF和RDB
数据库·redis·缓存
一条大祥脚37 分钟前
ABC357 基环树dp|懒标记线段树
数据结构·算法·图论
tod11337 分钟前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode
苦藤新鸡1 小时前
50.腐烂的橘子
数据结构·算法
!chen1 小时前
Redis快速实现布隆过滤器
数据库·redis·缓存
无限进步_1 小时前
面试题 02.02. 返回倒数第 k 个节点 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
2301_790300961 小时前
数据分析与科学计算
jvm·数据库·python
Hello World . .1 小时前
数据结构:栈和队列
c语言·开发语言·数据结构·vim