新推出的ORACLE9i内容翻新,采用了多种新颖的索引算法以显著地提高ORACLE查询数据库的速度。本文对ORACLE9i的索引技术内幕进行了一番讨论,对标准的b-tree索引、位图索引、基于函数的索引以及唯索引表(IOT)等进行了说明。同时,还会列出相应的代码程序,演示这些索引提高ORACLE
SQL的查询速度是如何显著。
在数据库操作中,我们该如何避免大型数据表扫描、全数据表扫描和磁盘排序等既费时间又费力气的操作呢?ORACLE9i对这一问题的回答是:采用索引技术,显然,在SQL优化器无法找到有效的方式来完成SQL查询的情况下就要用到索引运算了。我们首先看一下ORACLE9i索引中标准的ORACLE
b-tree索引方法。
在ORACLE的索引类型中,最古老、同时也是最常用的就是标准b-tree索引,标准b-tree索引在效率上通常会胜过简单查询。b-tree索引在最早的ORACLE数据库产品中就被引入了而且一直到ORACLE9i都是最常用的查询技术之一(参看图A)。B-tree索引的主要功能目标就是用来避免大规模排序操作。比方说,假设有个SQL查询需要对1万行数据进行排序操作,在这种情况下就会经常用到b-tree索引,有了它,在把数据交付给最终用户的时候就可以不用对数据进行大型排序操作了。
图A
ORACLE在用默认b-tree结构创建索引的时候给用户提供了好几种选择。首先,用户可以对多列索引(连接索引)来提高访问速度。此外,用户还可以让表内各列按照不同的顺序排序。比如,我们可以对last_name列按升序创建一个b-tree索引,然后在这个索引之内再找出第2列(salary)按降序显示salary列。清单A就显示了这一SQL。
显然,b-tree 索引通常是非常适合进行简单的单一查询的,但是在以下条件下就不适合选择这种方法了: