索引

来源:互联网 发布:mac软件下载安装 编辑:程序博客网 时间:2024/05/01 03:51

在关系数据库中,索引式一种与表由关的数据库结构,它可以使对应与表的sql 语句执行的更快。



oracle中的索引可以拥有它自己的存储空间,不必与相关联的表处于同一个表空间中。


在oracle中可以创建对中类型的索引,以适应跟中表的特点。常见的索引类型有b树索引,反向索引,位图索引,基于函数的索引,蔟索引,全局索引和局部索引等。



B树索引


B树索引是oracle中默认的和最常用的索引。B树索引的组织结构类似于一个树,其中的主要数据都集中在叶子节点上。各叶子节点中包括的数据有索引列的值和数据表中对应的rowid,如下图:





在B树索引中,无论用户要搜索哪个分支的叶子节点,都可以保证所经过的索引层次都是相同的。oracle采用这种方式的索引,可以确保无论索引条目位于何处,都值需要花费相同的i/o就可以获取它。



例如:使用这个b树索引搜索标号为1015的节点时,首先要访问根结点,从根结点中可以发现,下一步应该搜索右边的分支。因此必须第二次读取数据,读取右边的分支结点。从右边的分支结点可以判断除,要搜索的索引条目位于最左边的叶子结点中,这样就可以很快找到要查询的索引条目,并根据索引条目中的rowid进而找到所有查询的记录的位置。



这样,当对建立了b树索引的表进行查询时,只需要读取4次数据(第一次读取根结点,第二次读取分支结点,第三次读取叶子结点,最后一次用于从表中获取相关数据)。这于在表中进行完全搜索可能要读取几十次数据相比,使用索引数据通常要快的多

0 0