Oracle索引管理

      数据库索引是用来在表中查找特定的行。使用索引的一个负面影响是在向表中添加新行时,必须花费额外的时间来更新该行的索引。

      通常情况下,在需要从包含很多行的表中检索少数几行时,都应该队列创建索引。有一条基本的准则是:当任何当个查询要检索的行少于或等于整个表行数的10%时,索引就非常有用

      好的索引候选列是那些对每个记录只包含一个唯一值的列。Oracle数据库自动为表的主键列和唯一约束列创建B-树索引。对于包含小范围之的列,可以使用位图索引。

1、创建B-树索引:

CREATE [UNIQUE] INDEX index_name ON

table_name(column_name[,column_name ...])

TABLE_SPACE tab_space;

  • UNIQUE:指定索引列中的值必须唯一
  • index_name:索引名称
  • table_name:指定数据库表
  • column_name:指定哪些列创建索引。可以对多列创建索引
  • 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;

你可能感兴趣的:(Oracle索引管理)