CREATE INDEX
定义新索引。
语法
CREATE [ UNIQUE ] INDEX name ON table
( { column | ( expression ) } )
[ TABLESPACE tablespace ]
说明
CREATE INDEX 在指定表上构造索引 name。索引主要用于改进数据库性能(虽然不当使用会导致性能下降)。
索引的键字段以列名的形式指定,也可以使用括号中的表达式的形式指定。可以指定多个字段以创建多列索引。
索引字段可以是一个从表行的一个或多个列的值进行计算的表达式。此功能可用于根据基本数据的一些转换,获取对数据的快速访问。例如,在 UPPER(col) 上计算的索引将允许子句
WHERE
UPPER(col) = 'JIM'
使用索引。
POLARDB for Oracle 提供 B 树索引方法。B 树索引方法是 Lehman-Yao 高并发 B 树的实施。
默认情况下,索引不用于 IS NULL 子句。
索引定义中使用的所有函数和运算符必须是“不可变”的,其结果必须仅依赖于其参数,并且绝不会依赖于任何外部影响(例如另一个表的内容或当前时间)。此限制确保正确地定义索引的行为。要在索引表达式中使用用户定义的函数,请记住在创建函数时将其标记为不可变。
如果您在分区表上创建索引,则 CREATE INDEX 命令会将索引传播到表的二级分区。
说明 多列索引中最多可以指定 32 个字段。
参数
参数 | 说明 |
---|---|
UNIQUE | 使得系统在创建索引(如果数据已存在)以及每次添加数据时,检查表中的重复值。尝试插入或更新会导致重复条目的数据时,将生成错误。 |
name | 要创建的索引的名称。此处不能包含任何 schema 名称;索引始终在与其父表相同的 schema 中创建。 |
table | 要编制索引的表的名称(可能是 schema 限定的)。 |
column | 表中列的名称。 |
expression | 一个基于表的一列或多列的表达式。表达式通常必须括在一对括号中,如语法中所示。但是,如果表达式采用函数调用的形式,则可以省略括号。 |
tablespace | 要在其中创建索引的表空间。如果未指定,则使用 default_tablespace,如果 default_tablespace 为空字符串,则使用数据库的默认表空间。 |
示例
在表 emp 的列 ename 上创建 B 树索引:
CREATE INDEX name_idx ON emp (ename);
创建与上文相同的索引,但将其放在 index_tblspc 表空间中:
CREATE INDEX name_idx ON emp (ename) TABLESPACE index_tblspc;
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论