1、数据结构
二叉树:当树的节点在单边增加时,二叉数的查询和链表一样
红黑树:自平衡的二叉数,数据量大的时候树的高度很大
B树:每个节点有data
B+树:索引值会重复出现,每一层节点都是有序的,data都在叶子节点,叶节点之间有指针指向(mysql是双向的),每页大小为16K,对于千万级别的数据只需要3层(1170(16 k / 14 b) * 1170 * 16)

为什么采取B+树(将B树的data移到叶子节点)?
缩小节点的空间占用,每次从磁盘加载的时候可以加载更多的节点数据;叶子节点包含所有索引,且节点间有指针执行,方便查询

myisam引擎:三个文件,表结构、索引(data节点存放数据节点的磁盘地址)、数据
innodb引擎:两个个文件,表结构、索引和数据(data节点存放行数据)

索引是什么?
排好序数据结构

为什么innodb需要设计主键?
innodb默认的索引文件时根据主键建立的,如果没有主键则会查找所有行的值都不同的列建立索引,如果找不到这样的列则会生成隐藏列(类似(row_id)

为什么使用整型的自增主键?
整型比较大小更快,节约磁盘空间,满足范围查询(大于、小于;找最最小值后,在叶节点遍历),插入新节点时不需要对原来的节点进行调整(分裂和平衡)

innodb非id索引的data节点存放的是当前记录对应的主键?
为什么?能节约空间,新增记录需要维护多个索引文件

联合索引的存储结构?
联合索引的字段组成索引值,满足最左匹配原则(否则索引不是排好序的)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐