一、创建索引
Index-Type Options:Distinct/Unique和Cluster
其中,USING Access-Method Clause支持btree、rtree及bts(文本搜索)。
可以通过Extent Size Options对索引设置是extent size和next size大小。
Storge Options用来指定索引存储的相关位置,指定存储的dbspace信息,也可以对索引进行分片。
除了使用Create Index语句显式地创建索引,我们也可以创建隐式索引。隐式索引是创建约束(primary key、foreign key、unique constraint)时产生的,它不能利用现有的索引。对于隐式索引,我们不能指定dbspace的位置、分片策略和填充因子,它总是创建在数据库所在的dbspace上。
如下是使用主键约束创建隐式索引的示例:
create table t1(c1 int,c2 int,c3 int,primary key(c1))in datadbs1;
在建表时,可以先显式地创建满足参考约束条件的索引,然后使用alter table语句添加约束。这样,约束将利用现有的索引,而不是重新创建索引。
二、唯一索引
唯一索引在列中不允许重复的值出现,可以用来定义和约束表中的一列或者多列组合值,在执行insert和update语句时需要检查唯一性。一个良好的表设计都应该定义主键或者唯一约束索引。特别是OLTP系统中,唯一索引可以帮助快速定位少量数据。
非唯一索引(可重复索引)可以在非主键列中创建,允许在列中出现重复的数据。但是应避免在过于重复的数据列上创建索引,因为重复值越多的索引,其效率越低。
唯一索引的创建语法:
create unique index idx_name on tabname(co1);
或
create distinct index idx_name on tabname(co1);
一般一个表创建一个唯一索引就足够。由于需要在insert、update时进行唯一性判断,不建议一个表创建多个唯一索引。
填充因子
DBA在创建索引时可以指定每个索引页或节点中的填充百分比,这叫做填充因子(Fill Factor)。在索引的生命周期中,并不会维护该填充因子,它只会在索引创建时有效。
onconfig中的参数FILLFACTOR用于设置默认值,如果没有制定FILLFACTOR,则默认为90。




