索引原理与优化

1 索引介绍

mysql两大块重要内容索引和事务,索引是一般用于查询,事务一般用于插入修改操作。对于磁盘存储一般采用B树和B+树。
B树----》mongodb;B+树----》mysql
1 树演变过程:
树–》二叉树–》二叉排序树(二叉搜索树)–》平衡二叉树(AVL/红黑树)—>多路平衡搜索树
如下图:
在这里插入图片描述
2 B树、B+树
B树性质M阶B树:性质
1 每结点至少拥有M颗树
2 根结点至少有两颗子树
3 非根结点其余分支结点至少拥有M/2
4 叶子结点都在同一层
5 关键字k,则字树K+1,关键字递增
6 关键字 ceil(M/2) -1 <= n <= M-1
注意:一般在设计的时候,是将//度设为t,//阶:2t //结点最大元素: 2t-1
B+树性质
在B树基础上,a:将每一层的结点都用双向链表串联起来。
b:B树每个结点都存储了key,value,而B+树只有叶子结点才存储value,非叶子结点只存储比较key

在这里插入图片描述
3 B树与磁盘存储关系
对于磁盘存储一般就是采用B树和B+树来进行存储;由于内存存储是有限的,所以就需要磁盘存储数据,然后内存加载部分数据到内存计算查找。磁盘分为磁柱,磁盘,磁片,扇区等等概念;我们可以简单理解一个扇区就是一个B树或者B+树的结点。
4 mysql中的B+树结构
对于经典的B+树是在B树的基础上只做了处理:只有叶子结点才存储数据,非叶子结点存储比较key。
而对于mysql而言使用的B+树是在此基础上进行了优化:叶子结点存储数据,每一层都是采用shuang
关键点:
1 比较key,有序结构,所有data都在叶子结点,高度平衡
2 B+树的高度,代表磁盘IO次数 2-4层
3 结点的大小 默认16K
4 叶子结点当中存储所有data(innodb中,聚集索引存储数据行data和索引,myisam出差索引+数据指针;
非叶子结点只存储所有信息比较key。

2 索引分类

主要分为:主键索引,唯一索引,普通索引,组合索引以及全文索引
主键索引
非空唯一索引,一个表只有一个主键索引;在innodb中,主键索引B+树包含表数据信息;

PRIMARY KEY(key)

唯一索引
不可以出现相同的值,可以有NULL值

UNIQUE(key)

普通索引
允许出现相同的索引内容;

INDEX(key)
-- OR
KEY(key[,..
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰恒谷

你的鼓励是我最大创作动力!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值