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次数,提高了查询效率.

相关推荐
kingmax542120088 分钟前
CCF GESP202503 Grade4-B4263 [GESP202503 四级] 荒地开垦
数据结构·算法
钮钴禄·爱因斯晨1 小时前
Java 面向对象进阶之多态:从概念到实践的深度解析
java·开发语言·数据结构
20242817李臻1 小时前
20242817李臻-安全文件传输系统-项目验收
数据库·安全
行思理1 小时前
MongoDB慢查询临时开启方法讲解
数据库·mongodb
bbsh20992 小时前
WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
数据库·sql·mysql·webfuture
AL流云。2 小时前
【优选算法】C++滑动窗口
数据结构·c++·算法
霖檬ing2 小时前
Python——MySQL远程控制
开发语言·python·mysql
眼镜哥(with glasses)6 小时前
蓝桥杯 国赛2024python(b组)题目(1-3)
数据结构·算法·蓝桥杯
Zfox_6 小时前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
陈丹阳(滁州学院)8 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle