数据库索引

目录

一、为什么要使用索引

二、什么样的信息可以成为索引?

三、索引的数据结构

四、不同结构的优缺点

五、为什么通常使用B树而不使用二叉树

六、密集索引和稀疏索引的区别

七、索引是建立得越多越好吗


一、为什么要使用索引

1.全表扫描在数据量大的时候很慢(数据量小比使用索引快)

2.将关键信息作为索引,根据这些关键信息定位查询到我们想要的页面,可以大幅提高查询速度。

二、什么样的信息可以成为索引?

主键、唯一键、普通键都可以作为索引 

三、索引的数据结构

1.二叉树

2.B Tree

3.B+Tree

4.Hash结构

四、不同结构的优缺点

1.二叉树

 

(1)有序数据会使其变为线性结构

(2)平衡二叉树可以解决线性问题

(3)磁盘IO的影响,它相对于内存来说是很慢的,对于树来说,IO次数就是树的高度。当数据量很大时,运行速度极慢。


2.B Tree

定义:

  • 根节点至少包含两个孩子
  • 树中每个节点最多含有m个孩子
  • 根和叶子结点以外的节点至少有ceil(m/2)个孩子
  • 所有叶子节点位于同一层

优势:

(1)满足定义的B树是平衡树,不会变成线性结构

(2)有效降低高度,较少IO


3.B+树

B+树的定义

(1)非叶子节点的子树指针与关键字个数相同

(2)非叶子结点的子树指针P[i],指向关键字值[ K[i] , K[i+1] )的子树

(3)非叶子节点仅用来索引,数据都保存在叶子节点中

(4)所有叶子节点均有一个链指针指向下一个叶子节点

B+树的优点

(1)每个节点不保存数据,可以容纳更多索引,更“矮胖

(2)必须查找到叶子节点,更加稳定

(3)对于范围查找,只需要遍历叶子结点链表,更快捷


4.Hash索引

优缺点:

(1)效率高

(2)但是不能不稳定且不支持范围查询

(3)大量Hash值相等的情况,性能并不一定比B树索引高

4.bitMap索引

适合索引键和并发较少的情况


五、为什么通常使用B树而不使用二叉树

1.磁盘IO相对内存很慢。
2.数据库索引建立在磁盘上。
3.数据量大时,只能逐一加载每一个磁盘页(索引树的节点)。
4.因此对树来说,IO次数就是高度。
5.事实上:b树在查询时的比较次数并不比二叉树少,但是内存的访问速度很快,因此只要降低高度,即可提高运行效率。

 

六、密集索引和稀疏索引的区别

1.叶子节点保存:键值+同一行记录里的所有列信息

2.叶子节点保存:键值+该行数据的地址

 

七、索引是建立得越多越好吗

1.数据量小不需要建立索引,若建立会增加额外开销

2.索引建立的越多,维护成本越高

3.索引建立的越多,空间需要更多。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IMUHERO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值