数据库索引及其相关问题

一、索引的数据结构
数据库索引的数据结构主要有四种
1、二叉查找树
二叉查找树是对半查找,其时间复杂度为O(logn),但是最坏情况下会变成O(n)(排成线性表时)。
在这里插入图片描述
2、B树
B树出现的原因是为了降低树的深度,减少访问IO次数来优化查询速率。查询速率与二叉查找树一样高效。
3阶B树
3、B+树(MySql采用的)
B+树是B树的变体,其定义基本与B树相同,除了:
a、非叶子节点的字树指针与关键字个数相同
b、非叶子节点仅用来索引,数据都保存在叶子节点中。
c、所有叶子节点军头一个连指针指向下一个叶子节点,方便做范围统计
优势:
1、B+树的磁盘读写代价更低(根节点只存索引,不存数据)
2、B+树的查询效率更加稳定(所有关键字查找效率相同,必须到叶子节点)
3、B+树更有利于对数据的扫描(有一个链指针连接所有的叶子节点)
B+树
4、hash散列表
在这里插入图片描述
效率极高,但是
1、不能使用范围查询,
2、无法被用来避免数据的排序操作,
3、不能利用部分索引键查询(用的组合索引)
4、不能避免全表扫描
5、遇到大量Hash值相等的情况下,性能不一定比B树高

常见问题
1、为什么要使用索引?
使用索引可以快速查询数据。全表扫描在表小时很快,但是如果表达太大会非常慢。索引类似与字典,可直接查找
2、什么样的信息能够成为索引?
主键、唯一键、普通键等。主要是一些关键信息,能够让数据具备区分性的字段。
3、密集索引和稀疏索引的区别?
密集索引:每个搜索码值都对应一个索引值
稀疏索引:文件只为索引码的某些值建立索引项。
其中在MySql中InnoDB是密集索引,MyISAM是稀疏索引。
4、联合索引的最左匹配原则
假设查询字段为(a,b,c)建立的联合索引为(a),(a,b),(a,b,c)三个,从形式上看就是索引向左侧聚集,所以叫做最左原则。因此最常用的条件应该放到联合索引组的最左侧。
5、索引是建立越多越好吗?
并不是,因为索引就相当于书本的目录,在表特别小的时候不需要建立索引。而且更多的索引意味着需要更多的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值