【学习笔记】Mysql(一)什么是索引

一、索引的本质。

索引是帮助Mysql高效获取数据的排好序数据结构。

、索引数据结构的选型。

1.线性结构

1.1 数组。 查询成本低,插入删除成本高。

1.2 链表。 插入删除成本低,查询成本高。

如何综合查询和插入成本?

2.引入树型结构。

2.1 二叉树。

通过二分的形式,插入删除和速度都变快了。

极端情况,如果只是单边增长的数据,结构基本等于链表。

2.2 AVL 二叉查找树。定义,任意节点两个子树的高度最大差别为1

仅理想状态。二叉查找树,了解删除。

删除节点拥有,

双节点时,使用第一个后继节点(第一个大于它的数)

或者使用第一个前继节点(第一个小于 它的树)

2.3 引入红黑树

性质

1.每个节点不是红色就是黑色

2.没有相连的红色节点。每个叶子节点都是黑色的空子节点(NIL)(就是每个看上去的子节点都会补足两个黑色的空节点)

3.根节点是黑色的

4.从根节点,到所有叶子节点所经历的黑节点数目相同。

插入

1.插入节点一定是红色。

开始判断插入节点是否合法。如果插入节点及其父节点都是红色。触发以下逻辑。

1.1变色
父节点和叔节点是红色
父节点和叔节点变黑。
爷爷变红。
判指针指向爷节点。

1.2左旋

如果父节点红,叔节点黑。
点前节点为右子树,则父左旋。
判断指针指向原父节点

p,r

r.p = p.p
r.l = p
p.r = r.l
 

1.3右旋

如果父节点红,叔节点黑。
点前节点为左子树,父黑,爷红。则爷右旋。

p,l

l.p = p.p
l.r = p
p.l = l.r

大数据的情况下,红黑树高度会很高,

2.4 B树/B+树

每个页节点存放多个数据。

区别:B树的数据,存放在所有节点上。

B+树的数据,不放存在非叶子节点,仅存在子节点。非叶子只冗余存索引。

B+树的叶子拥有双向指针。

2.5 hash.

等值查找很快,但是不适配范围查找。

3.聚集索引,覆盖索引。

检索引擎是基于表的。

innodb

Myisam.主键索引和数据分离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值