CREATE TABLE `user` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
这是一张简单的用户表,包含id和name两个字段,id为主键自增,name上没有索引。想必大家对索引都有一定的认识,索引是一种
数据结构,即本篇的核心议题“树”结构,索引可以达到快速命中某条记录,“快速”一词代表着在时间和空间相结合的最优解,当然也
并不代表索引越多,数据表设计越合理,要根据实际业务去选择。
我们随机向表中插入几条记录
INSERT INTO `user` VALUES(1,"Join");
INSERT INTO `user` VALUES(2,"Tom");
INSERT INTO `user` VALUES(3,"Jeein");
按照预期,数据库内出现三条对应的记录,这里我使用语句
SELECT * FROM `user`;
对数据进行查询
看到这里,你可能说了,这是在讲什么,增删改查都是常识,有什么好讲的,那我们现在就正式进入正题,首先从插入记录开始说
起,MySQL会使用B+树来存储数据记录,B+树是B树的延伸,而B树又是平衡二叉树的延伸,除了平衡二叉树还有二叉查找树,依次
基于其概念延伸的排序,大概是如下这样
B+树 -> B树 -> 平衡二叉树 -> 二叉查找树 -> 二叉树 -> 树
当然也不仅仅是所有跟树有关的数据结构,这里为了提高学习树这种数据结构的兴趣,所以以MySQL讲起,纠其根源,再结合
MySQL的数据记录将这一串知识链接起来,那我们把这个顺序倒过来依次讲起
树 -> 二叉树 -> 二叉查找树 -> 平衡二叉树 -> B树 -> B+树
我尽量不把这些数据结构讲成教科书的样子。
树
评论