Oracle索引

本Oracle教程解释了如何在Oracle中创建,重命名和删除索引的语法和示例。

什么是Oracle中的索引?

索引是一种允许更快地检索记录的性能调整方法。 索引为出现在索引列中的每个值创建一个条目。 默认情况下,Oracle创建B树索引。

创建一个索引

语法
在Oracle / PLSQL中创建索引的语法是:

CREATE [UNIQUE] INDEX index_name
  ON table_name (column1, column2, ... column_n)
  [ COMPUTE STATISTICS ];
  • UNIQUE - 它表示索引列中值的组合必须是唯一的。
  • index_name - 要分配给索引的名称。
  • table_name - 要在其中创建索引的表的名称。
  • column1, column2, … column_n - 在索引中使用的列。
  • COMPUTE STATISTICS - 它告诉Oracle在创建索引期间收集统计信息。 当执行SQL语句时,统计信息将被优化器用于选择“执行计划”。

示例

我们来看一个如何在Oracle / PLSQL中创建索引的例子。

例如:

CREATE INDEX supplier_idx
  ON supplier (supplier_name);

在这个例子中,在supplier表上创建了一个名为supplier_idx的索引。 它只包含一个字段 - supplier_name字段。

也可以创建一个具有多个字段的索引,如下例所示:

CREATE INDEX supplier_idx
  ON supplier (supplier_name, city);

也可以选择在创建索引时收集统计信息,如下所示:

CREATE INDEX supplier_idx
  ON supplier (supplier_name, city)
  COMPUTE STATISTICS;

创建一个基于函数的索引

在Oracle中,不受限于仅在列上创建索引。 还可以创建基于函数的索引。

语法

在Oracle / PLSQL中创建基于函数的索引的语法是:

CREATE [UNIQUE] INDEX index_name
  ON table_name (function1, function2, ... function_n)
  [ COMPUTE STATISTICS ];
  • UNIQUE - 它表示索引列中值的组合必须是唯一的。
  • index_name - 要分配给索引的名称。
  • table_name - 要在其中创建索引的表的名称。
  • function1, function2, … function_n - 索引中使用的函数。
  • COMPUTE STATISTICS - 它告诉Oracle在创建索引期间收集统计信息。 当执行SQL语句时,统计信息将被优化器用于选择“执行计划”。

示例

我们来看一个如何在Oracle / PLSQL中创建基于函数的索引的例子。

例如:

CREATE INDEX supplier_idx
  ON supplier (UPPER(supplier_name));

在这个例子中,我们创建了一个基于supplier_name字段大写的索引。

但是,要确保Oracle优化器在执行SQL语句时使用此索引,请确保UPPER(supplier_name)不计算为NULL值。 为了确保这一点,请在WHERE子句中添加UPPER(supplier_name)IS NOT NULL,如下所示:

SELECT supplier_id, supplier_name, UPPER(supplier_name)
FROM supplier
WHERE UPPER(supplier_name) IS NOT NULL
ORDER BY UPPER(supplier_name);

重命名索引

语法

在Oracle / PLSQL中重命名索引的语法是:

ALTER INDEX index_name
  RENAME TO new_index_name;
  • index_name - 希望重新命名的索引名称。
  • new_index_name - 要分配给索引的新名称。

示例

我们来看一个如何在Oracle / PLSQL中重命名索引的例子。

例如:

ALTER INDEX supplier_idx
  RENAME TO supplier_index_name;

在这个例子中,我们将名为supplier_idx的索引重命名为supplier_index_name

收集关于索引的统计数据

如果第一次创建索引时,忘记收集索引的统计信息,或者您想更新统计信息,则始终可以使用ALTER INDEX命令在以后收集统计信息。

语法
在Oracle / PLSQL中收集索引统计信息的语法是:

ALTER INDEX index_name
  REBUILD COMPUTE STATISTICS;
  • index_name - 收集统计数据的索引。

示例

我们来看一个如何为Oracle / PLSQL中的索引收集统计数据的例子。

例如:

ALTER INDEX supplier_idx
  REBUILD COMPUTE STATISTICS;

在这个例子中,正在收集名为supplier_idx的索引的统计信息。

删除索引

语法

在Oracle / PLSQL中删除索引的语法是:

DROP INDEX index_name;
  • index_name - 要删除的索引的名称。

示例

我们来看一个如何在Oracle / PLSQL中删除索引的例子。

例如:

DROP INDEX supplier_idx;

在这个例子中,删除一个名为supplier_idx的索引。


posted @ 2018-03-22 14:32  YouseiRaws  阅读(304)  评论(0编辑  收藏  举报