创建索引

创建索引有多种方法,这些方法包括直接创建索引的方法和间接创建索引的方法。直接创建索引,例如使用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@

你可能感兴趣的:(创建索引)