日期:2014-05-16  浏览次数:20529 次

DB2数据库中索引的语法介绍

CREATE INDEX 语句用来为 DB2 Everyplace 表创建索引。

CREATE--INDEX--index-name--ON--table-name。

描述?: INDEX index-name命名索引:ON table-name。

?

表名:table-name 。命名要对其创建索引的表:column-name

对于索引,列名标识要作为索引键一部分的列。每个列名都必须是标识一个表列的未限定名。使用 8 列或更少的列;不能重复列名(SQLSTATE 42711)。每个指定列的长度一定不能超过 1024 字节。

ASC 按列以升序顺序排列索引条目。这是缺省值。

DESC按列以降序顺序排列索引条目。

LCASE / UCASE

LCASE 或 LOWER 函数返回一个字符串,其中所有 SBCS 字符都已转换为小写字符。即,字符 A 至 Z 将转换为字符 a 至 z,而带有区分标记的字符将转换为其小写等效项(如果它们存在的话)。

自变量必须是其值为 CHAR 或 VARCHAR 数据类型的表达式。

该函数的结果的数据类型和长度属性与自变量的数据类型和长度属性相同。如果自变量可以为空,则结果可以为空;如果自变量为空,则结果为空值。

确保 EMPLOYEE 表中的列 JOB 的值中的字符将以小写字符的形式返回。例如:

  SELECT LCASE(JOB)

  FROM EMPLOYEE

  WHERE EMPNO = '000020';

  规则

  对于没有主键的表,最多可创建 15 个索引。对于有主键的表,最多可创建 14 个索引。

  如果尝试创建与现有索引匹配的索引,则 CREATE INDEX 语句将失败。在下列情况下,两个索引描述被认为是重复的:

  索引中的列集及其顺序与现有索引的列集和顺序相同。

  排序属性是相同的。

  不能在 CREATE INDEX 语句中使用具有 BLOB 数据类型的列。

  注意事项

  CREATE INDEX 语句可包含最多 8 列。

  DB2 Everyplace 支持索引的双向扫描。尽管下面两个索引的定义不同,但它们的作用是相同的。

  CREATE INDEX IDX1 ON EMPLOYEE (JOB ASC)

  CREATE INDEX IDX1 ON EMPLOYEE (JOB DESC)

  通常,应在不指定排序方向的情况下创建索引。通常,索引越少,索引维护的成本也就越低。

  DB2 Everyplace 支持索引的前缀扫描。考虑以下示例。创建了以下索引。

  CREATE INDEX J1 ON T (A, B, C, D, E, F, G, K)

  不需要为 T (A,B,C,D) 创建另一索引。

  如果该表未包含数据,则 CREATE INDEX 创建索引的描述;在对表插入数据时创建索引条目。

  要为脏位索引创建索引,请使用以下示例:

  CREATE INDEX

  ON   ($dirty)

  有关脏位的更多信息,请参阅 ***。

  示例

  为 EMPLOYEE 表创建名为 JOB_BY_DPT 的索引。按每个部门(WORKDEPT)中的职位(JOB)以升序顺序排列索引条目。

  CREATE INDEX JOB_BY_DPT

  ON EMPLOYEE (WORKDEPT, JOB)

?

  注意:在建表的时候可以指定索引的表空间,比如: create table tabname(...) in tabspace index in tabindexspace