重建现有的索引性能要优于删除重建索引。 ALTER INDEX item_index REBUILD; 2.0、传统的 B树索引: CREATE INDEX ix_mm ON mm(m1);
2.1、唯一索引:唯一约束就是唯一索引,但唯一索引未必是唯一约束。 CREATE UNIQUE INDEX myidx ON mm(m2);
2.2、组合索引:在表中多个列上创建的索引。如果 SELECT 语句中 WHERE 子句引用了组合索引中的所有列或大多数列,则组合索引可以提高数据检索速度。通常创建索引时最频繁访问的列应该放在列表的最前面。 CREATE INDEX comp_index ON itemfile(p_category, itemrate);
2.3、反向键索引:特殊的索引,在索引含有序数的列时非常有用,反向键索引通过简单的反向被索引中的数据来解决问题。 CREATE INDEX rev_index ON itemfile(itemcode) REVERSE;
ps.可以使用 NOREVERSE 将反向键索引重建为标准索引,但不能将标准索引重建为反向键索引。 ALTER INDEX rev_index REBUILD NOREVERSE;
2.4、位图索引:表里数据量大,但表的唯一值少。位图索引使用每个键值的位图,而不是用 ROWID 列表。 CREATE BITMAP INDEX bit_emp ON emp(sex);
CREATE TABLE sales ( … ) PARTTION BY RANGE (sales_cost) ( PARTTION P1 VALUES LESS THAN (1000), PARTTION P2 VALUES LESS THAN (2000), PARTTION P3 VALUES LESS THAN (3000), PARTTION P4 VALUES LESS THAN (MAXVALUE) /* 大于3000的其他值都存储于分区 P4 */ );
4.2、散列分区 散列分区通过在分区键值上执行一个散列函数来决定数据的物理位置。散列分区把记录平均地分布到不同的分区,减少了磁盘 I/O 争用的可能性。 例如:创建 employer 表按照 department 列分区成 4个散列分区
CREATE TABLE sales ( … ) PARTTION BY RANGE (sales_date) SUBPARTTION BY HASH (product_id) SUBPARTTION 5 ( PARTTION P1 VALUES LESS THEN (DATE ’2001-04-01’), PARTTION P2 VALUES LESS THEN (DATE ’2001-07-01’), PARTTION P3 VALUES LESS THEN (DATE ’2001-09-01’), PARTTION P4 VALUES LESS THEN (MAXVALUE) );