Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427240
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Oracle

2008-06-17 23:58:33

索引的结构

用户不能使用SQL语句直接访问索引,直接增加、修改、删除索引中的记录。对索引的访问和维护,由数据库系统自动完成,系统根据用户对表的更新操作更新索引中记录。

用户访问带索引的表时,将由系统决定是使用索引访问,还是使用表扫描。索引中记录存贮在索引页上,索引页使用的磁盘空间在需要时分配。索引记录中包含键值和指针。键值就是创建索引所使用取值字段的,整个索引中的记录就按照键值被排序存放;指针指向下一级的索引页或者表的数据页,索引中的所有索引页就通过指针连接起来。

 

 

B树索引是数据库中应用最广泛的索引方式,它采用平衡树结构,每个叶结点到根的路径长度相同。下面我们就以B树为例,说明索引的结构(如图4-3)。

一个索引中的数据页可以分为:根页(root page)、叶页(leaf page)、分支页(branch page)。

根页是整个索引中的最高一级,一个索引只能有一个根页。如果索引很小,所有的记录可以存放在一个索引页中,那么该索引没有叶页和分支页,根页中就存储着指向数据页的记录号。

叶页是索引的最低一级,包含表中每一记录的键值及记录号,记录以键值的排列顺序存储。系统通过索引访问表中记录,就是根据键值找到键值所在的叶页以及对应的索引记录,然后使用索引记录中的记录号,找到表中记录的位置。

根页和叶页之间的所有索引页称为分支页。分支页中的每一条记录都指向下一级的分支页或者叶页,一个大型表上的索引可能需要许多分支页。

阅读(552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~