Oracle 显示索引信息
- 格式:doc
- 大小:66.00 KB
- 文档页数:2
Oracle 显示索引信息
为了显示Oracle索引的信息,Oracle提供了一系列的数据字典视图。通过查询这些数据字典视图,用户可以了解索引的各方面信息。
1.显示表的所有索引
索引是用于加速数据存储的数据库对象。通过查询数据字典视图DBA_INDEXES,可以显示数据库的所有索引;通过查询数据字典视图ALL_INDEXES,可以显示当前用户可访问的所有索引;查询数据字典视图USER_INDEXES,可以显示当前用户的索引信息。下面以显示SCOTT用户EMP表的所有索引为例,说明使用数据字典视图DBA_INDEXES的方法:
SQL> connect system/password
已连接。
SQL> select index_name,index_type,uniqueness
2 from dba_indexes
3 where owner='SCOTT' and table_name='EMP';
INDEX_NAME INDEX_TYPE UNIQUENES
------------------------------ --------------------------- ---------
EMP_ENAME_INDEX NORMAL NONUNIQUE
EMP_JOB_BMP BITMAP NONUNIQUE
IDX_ENAME FUNCTION-BASED NORMAL NONUNIQUE
PK_EMP NORMAL/REV UNIQUE
如上所示,INDEX_NAME用于标识索引名。INDEX_TYPE用于标识索引类型:NORMAL表示普通B树索引;REV表示反向键索引;BITMAP表示位图索引;FUNCTION 表示基于函数的索引。UNIQUENESS用于标识索引的惟一性;OWNER用于标识对象的所有者;TABLE_NAME用于标识表名。
2.显示索引列
创建索引时,需要提供相应的表列。通过查询数据字典视图DBA_IND_COLUMNS,可以显示所有索引的表列信息;通过查询数据字典视图ALL_IND_COLUMNS,可以显示当前用户可访问所有索引的表列信息;通过查询数据字典视图USER_IND_COLUMNS,可以显示当前用户索引的表列信息。
例如,下面的语句将显示SCOTT用户的PK_EMP索引列信息:
SQL> col column_name format a20
SQL> select column_name,column_position,column_length
2 from user_ind_columns
3 where index_name='PK_EMP';
COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH
-------------------- ---------------------------- -------------
EMPNO 1 22
如上所示,COLUMN_NAME用于标识索引列的名称;COLUMN_POSITION用于标识列在索引中的位置;COLUMN_LENGTH用于标识索引列的长度。
3.显示索引段位置及尺寸
建立索引时,Oracle会为索引分配相应的索引段,索引数据会被存放在索引段中,并且段名与索引名完全相同。通过查询数据字典视图DBA_SEGMENTS,可以显示数据库所有段的详细信息;通过查询数据字典视图USER_SEGMENTS,可以显示当前用户段的详细信息。
例如,下面的语句将显示SCOTT用户的PK_EMP段的信息:
SQL> select tablespace_name,segment_type,bytes
2 from user_segments
3 where segment_name='PK_EMP';
TABLESPACE_NAME SEGMENT_TYPE BYTES
------------------------------ ------------------ ----------
USERS INDEX 65536
其中,TABLESPACE_NAME用于标识段所在的表空间;SEGMENT_TYPE用于标识段的类型;BYTES用于标识段的尺寸;SEGMENT_NAME用于标识段的名称。
4.显示函数索引
建立函数索引时,Oracle会将函数索引的信息存放到数据字典中。通过查询数据字典视图DBA_IND_EXPRESSIONS,可以显示数据库所有函数索引所对应的函数或表达式;通过查询数据字典USER_IND_EXPRESSIONS,可以显示当前用户函数索引所对应的函数或表达式。
例如,下面的语句显示EMP表中基于函数的索引信息:
SQL> select column_expression
2 from user_ind_expressions
3 where index_name='IDX_ENAME';
COLUMN_EXPRESSION
--------------------------------------
LOWER("ENAME")