索引是由oracle维护的可选结构,为数据提供快速的访问。

 

准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度。

 

当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列。一旦建立了索引,在用户表中建立、更改和删除数据库时, oracle就自动地维护索引。创建索引时,下列准则将帮助用户做出决定:

 


 

作者: 陆阳

 

索引是由oracle维护的可选结构,为数据提供快速的访问。

 

准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度。

 

当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列。一旦建立了索引,在用户表中建立、更改和删除数据库时, oracle就自动地维护索引。创建索引时,下列准则将帮助用户做出决定:

 

1) 索引应该在sql语句的"where"或"and"部分涉及的表列(也称谓词)被建立。假如personnel表的"firstname"表列作为查询结果显示,而不是作为谓词部分,则不论其值是什么,该表列不会被索引。

 

2)用户应该索引具有一定范围的表列,索引时有一个大致的原则:如果表中列的值占该表中行的2 0 %以内,这个表列就可以作为候选索引表列。假设一个表有36 000行且表中一个表列的值平均分布(大约每12000行),那么该表列不适合于一个索引。然而,如果同一个表中的其他表列中列值的行在1 0 0 0~1 5 0 0之间(占3 %~4 % ),则该表列可用作索引。

 

3)如果在s q l语句谓词中多个表列被一起连续引用,则应该考虑将这些表列一起放在一个索引内, o r a c l e将维护单个表列的索引(建立在单一表列上)或复合索引(建立在多个表列上)。复合索引称并置索引。

 

 

 

1 主关键字的约束

 

关系数据库理论指出,在表中能唯一标识表的每个数据行的一个或多个表列是对象的主关键字。由于数据字典中定义的主关键字能确保表中数据行之间的唯一性,因此,在o r a c l e 8 i数据库中建立表索引关键字有助于应用调节。另外,这也减轻了开发者为了实现唯一性检查,而需要各自编程的要求。

 

提示使用主关键字索引条目比不使用主关键字索引检索得快。

 

假设表p e r s o n把它的i d表列作为主关键字,用下列代码设置约束:

 

alter table person add constraint person_pk primary key (id) using index storage (initial 1m next 1m

 

 

pctincrease 0) tablespace prd_indexes ;

 

处理下列s q l语句时:

 

select last_name ,first_name ,salary from person where id = 289 ;