数据库索引是用来在表中查找特定的行。使用索引的一个负面影响是在向表中添加新行时,必须花费额外的时间来更新该行的索引。
通常情况下,在需要从包含很多行的表中检索少数几行时,都应该队列创建索引。有一条基本的准则是:当任何当个查询要检索的行少于或等于整个表行数的10%时,索引就非常有用。
好的索引候选列是那些对每个记录只包含一个唯一值的列。Oracle数据库自动为表的主键列和唯一约束列创建B-树索引。对于包含小范围之的列,可以使用位图索引。
1、创建B-树索引:
CREATE [UNIQUE] INDEX index_name ON
table_name(column_name[,column_name ...])
TABLE_SPACE tab_space;
例如:CREATE INDEX i_customers_last_name ON customers(last_name);
注意:注意性能方面的考虑,通常应该将索引和表存储在不同的表空间中。
2、创建基于函数的索引:
对于i_customers_last_name索引,如下查询语句不会使用该索引
SELECT first_name,last_name FROM customers WHERE last_name = UPPER('BROWN');
可以使用函数索引解决这一问题:
CREATE INDEX i_customers_last_name ON customers(UPPER(last_name));
3、修改索引:
ALTER INDEX i_customers_last_name RENAME TO i_customers_first_name;
4、删除索引:
DROP INDEX i_customers_first_name;