索引:索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列数据创建索引,并指定索引类型,各类索引有各自的数据结构实现

索引的主要作用有
索引的缺点有
使用场景:要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点
PRIMARY KEY、UNIQUE、FOREIGN KEY约束时,会自动创建对应列的索引语法:格式如下
show index from 表名
例子:
show index from student

语法:对于非PRIMARY KEY、UNIQUE、FOREIGN KEY约束可以创建普通索引
create index 索引名 on 表名(列名)
例子:
create index index_Ssex on student(Ssex)

语法:格式如下
drop index 索引名 on 表名
例子:
drop index index_Ssex on student;

B树(B-tree):是一种平衡的多路查找树,结点最大的孩子数目称之为B树的阶(order)。和二叉排序树一样,每个结点把查找范围分为了两个区间,小于它的在左侧,大于它的在右侧
如下是一个5阶B树

B树操作
①:插入
B树插入过程中,最重要的一个操作是拆分
②:查找
其查找过程也和二叉排序树基本一致,这里就不再叙述了。
如下是在B树中查找关键字“44”的过程

③:删除
当要删除的结点的关键字落在终端结点上时,且终端结点的关键字个数大于2可以直接删除

当要删除的结点的关键字是非根非叶子结点的关键字时,和二叉排序树一样,向右分支找寻节点中最小的关键字或者向左分支找寻结点中最大的关键字进行取代(注意仍然需要满足关键字个数的要求)

如果删除后关键字还不满足条件,可以进行借位操作

如果无法借位,那就直接删除然后和左或右进行合并操作

B+树:B+树是为应对文件系统所需而产生的B树的变形。在B树基础上,B+树为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引,B+树总是到叶子结点才命中

下一篇:通关算法题之 ⌈二叉树⌋ 下