数据库索引(个人笔记)

16、 B+Tree的存储方式InneDB引擎
在这里插入图片描述
在这里插入图片描述
普通索引:其实对某字段建立了索引就相当于是对该字段新建立了一个表,这个表里的元素是安照这个字段有序排列
聚集索引:直接重构整个存储过程

a) B树的节点生成方式,不断地以最中间的节点进行分裂、当根节点满了之后、进行分裂。如果是子节点满了之后、子节点的中心会向父节点传递,子节点分裂为2份指向两个分裂的节点,如果这时父节点也满了,父节点向上分裂
b) B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针。
c) B+树内部有两种结点,一种是索引结点,一种是叶子结点。
d) B+树的索引结点并不会保存记录,只用于索引,所有的数据都保存在B+树的叶子结点中。而B树则是所有结点都会保存数据。索引上存储的都是物理地址(磁盘)
e) B+树的叶子结点都会被连成一条链表。叶子本身按索引值的大小从小到大进行排序。即这条链表是 从小到大的。多了条链表方便范围查找数据。
f) B树的所有索引值是不会重复的,而B+树 非叶子结点的索引值 最终一定会全部出现在 叶子结点中。
g) B+树必然是平衡的,从树根到树叶的所有路径都是等长的。
17、 建立一个user_id,age,name的组合索引
a) 组合索引,如果按照多个字段作为索引,最左匹配原则,用最左的字段作为索引。
b) 如果条件只有age,name将不会走索引
c) 组合索引本质是从一个键值,变成多个。
d) 为什么建立组合索引,往往是因为一个字段不能成为主键,而查询的时候往往用两个及以上的条件。加快速率
e) EXPLAIN+SQL语句即可以查看本SQL的查询效率。
在这里插入图片描述
f) 联合索引失效的情况及原因主要有两种
i.不用a,直接使用b作为条件
ii.a的查询为like,百分号在右边不会失效,在左边存在会失效,因为索引是从左向右作为比较方式的。其他基本也都是这个原因。
g) 如果业务的确需要很多不同维度进行查询,那么就该创建对应多的索引,这是没有任何值得商榷的地方(可以超过5个)。如果建立无效索引占用了空间,又影响了插入的性能。
h) 通过二级索引只能得到主键值,二级索引的叶子节点包括键值和主键值,根据主键值定位到完整的数据,组合索引避免回表(索引覆盖),可以说二级索引就是一张表
i) 堆表中的数据无序存放,用索引指向堆表中的数据,空间利用率好,缺点当数据位置发生变化所有的索引都要更新,堆表不存在聚集索引的说法。
j) 索引组织表中,数据即索引,索引即数据(索引后面跟着的不是地址,而是数据),这个索引指的是聚集索引

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值