创建索引有多种方法,这些方法包括直接创建索引的方法和间接创建索引的方法。直接创建索引,例如使用CREATE INDEX语句或者使用创建索引向导,间接创建索引,例如在表中定义主键约束或者唯一性键约束时,同时也创建了索引。虽然,这两种方法都可以创建索引,但是,它们创建索引的具体内容是有区别的。
使用CREATE INDEX语句或者使用创建索引向导来创建索引,这是最基本的索引创建方式,并且这种方法最具有柔性,可以定制创建出符合自己需要的索引。在使用这种方式创建索引时,可以使用许多选项,例如指定数据页的充满度、进行排序、整理统计信息等,这样可以优化索引。使用这种方法,可以指定索引的类型、唯一性和复合性,也就是说,既可以创建聚簇索引,也可以创建非聚簇索引,既可以在一个列上创建索引,也可以在两个或者两个以上的列上创建索引。
通过定义主键约束或者唯一性键约束,也可以间接创建索引。主键约束是一种保持数据完整性的逻辑,它限制表中的记录有相同的主键记录。在创建主键约束时,系统自动创建了一个唯一性的聚簇索引。虽然,在逻辑上,主键约束是一种重要的结构,但是,在物理结构上,与主键约束相对应的结构是唯一性的聚簇索引。换句话说,在物理实现上,不存在主键约束,而只存在唯一性的聚簇索引。同样,在创建唯一性键约束时,也同时创建了索引,这种索引则是唯一性的非聚簇索引。因此,当使用约束创建索引时,索引的类型和特征基本上都已经确定了,由用户定制的余地比较小。
创建索引:CREATE INDEX mycolumn_index ON mytable (myclumn)
删除索引:DROP INDEX mytable.mycolumn_index
DB2中例子如下:
将经常需要查询的字段弄成索引
CREATE TABLE O_PROTOCOLBATCHFOCUS1
(BATCHID INTEGER NOT NULL,
INPUTDATE TIMESTAMP DEFAULT CURRENT TIMESTAMP,
YEAR CHARACTER(4) NOT NULL,
HALF CHARACTER(1) NOT NULL,
COMPANY INTEGER NOT NULL,
LEVEL1 INTEGER NOT NULL,
REVISED_QUANTITY DECIMAL(19, 4),
FINAL_QUANTITY DECIMAL(19, 4)
)@
CREATE INDEX NBADV.i_O_PROCUS1
ON NBADV.O_PROTOCOLBATCHFOCUS1
(YEAR ASC,
HALF ASC,
COMPANY ASC,
BATCHID asc
)
PCTFREE 10
ALLOW REVERSE SCANS@
CREATE INDEX NBADV.i_O_PROCUS2
ON NBADV.O_PROTOCOLBATCHFOCUS1
(YEAR ASC,
HALF ASC,
LEVEL1 ASC,
BATCHID asc
)
PCTFREE 10
ALLOW REVERSE SCANS@