数据库索引及其数据结构

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。围标设置索引是要付出代价的:一是增加了数据库的存储空间;而是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

                  

上图展示了一种可能的索引方式。左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不一定是物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个对应数据记录物理地址的指针,这样就可以运用二叉查找树在log2n的复查度内获取到响应的数据。

创建索引可以大大提高系统的性能。

第一, 通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性。

第二, 可以大大加快数据的索引速度,这也是创建索引的最主要的原因。

第三, 可以加速表与表中的连接。

第四, 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五, 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

增加索引也有很多不利的地方。

第一, 创建索引和维护索引需要耗费时间,这种时间随着数据量的增加而增加。

第二, 索引需要占用物理空间,输了数据表和数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

第三,对表中的数据进行增加、删除和修改的时候,索引也需要动态的维护,这样就降低了数据的维护速度。

根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。

唯一索引 : 唯一索引不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。

主键索引:数据库表经常有一列或列组合,其值唯一标识表中的每一行,该列成为表的主键。

在数据库关系途中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每一个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。

聚集索引:在聚集索引中,其中行的物理顺序与兼职的逻辑顺序相同。一个表中只能包含一个聚集索引。

 

局部性原理与磁盘预读:

局部性原理:当一个数据被用到的时候就,其附近的数据也通常马上被使用。程序运行期间所需要的数据通常比较集中。

由于磁盘顺序读取的效率不是很高, 因此对于局部性的程序来说,预读可以提高IO效率。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值