数据库索引

本文介绍了数据库索引的基本概念,包括顺序文件上的索引原理及B+树索引的特点。通过建立索引,能够显著提高查询速度,特别是对于大型数据表。文章还探讨了局部性原理在磁盘预读中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

当表的数据量比较大时,查询操作会比较耗时。建立索引是加快查询速度的有效手段。数据库索引类似于图书后面的索引,能快速定位到需要查询的内容,用户可以在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。

局部性原理:当一个数据被用到时,其附近的数据通常会马上被使用,程序运行期间所需的数据通常比较集中。
由于磁盘的读取速度与内存的读取速度差别太大,因此磁盘的读取往往不是按需读取,而是预读,磁盘读取完需要的数据,会顺序向后读取一定的数据存入内存。由于磁盘顺序读取的效率很高(不需要寻道时间,只需要很少的旋转时间),预读可以提高I/O的效率,预读的长度一般为页(page)的整数倍。

顺序文件上的索引:

顺序文件上的索引是针对按指定属性值升序或降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成。
顺序文件索引原理:每次从磁盘里读进内存的数据是索引文件即属性值和相应的元组指针,指针占用的空间远远小于实际记录,因此可以实现快速索引。如果表中数据量过大,可以建立稀疏索引,即并不是每个键值都出现在索引中,稀疏索引在一定程度上牺牲了精确查找的效率,但是提高的大表的查询效率。另外还可以建立多级索引,即在一级索引上建立二级索引。

B+索引:

介绍B+索引之前先介绍下B树,
B树的性质,B树不同于二叉树,一颗M阶B树:
1.每个节点最多有M个孩子(M-1个关键字)
2.除根节点和叶节点之外,每个节点最少有M/2个孩子,
3.根节点最少有两个孩子(一个关键字),除非该树只有一个节点,
4.所有叶节点在同一层,叶节点不包含关键字信息,
5.K个关键字的非叶结点恰好包含K+1个孩子节点,关键字是从小到大排序的(n,p0,k0,p1,k1,…pn),
k[]关键字数组,从小到大排列,
p[i]所指向的节点关键字小于k[i]大于k[i-1],
非叶结点不仅包含关键字和指向孩子节点的指针,还包括指向关键字具体信息的指针,红色点可以理解为指向关键字具体信息的指针
红色点可以理解为指向关键字具体信息的指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值