查看Oracle的表中有哪些索引(用user_indexes和user_ind_columns)
(2016-11-03 16:50:25)
标签:
it |
分类: sql |
用user_indexes和user_ind_columns系统表查看已经存在的索引
对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns)来查看其具体内容,例如是属于那个表,哪个列和,具体有些什么参数等等。
user_indexes:
user_ind_column:
查看索引个数和类别:
SQL> select * from user_indexes where table='表名' ;
查看索引被索引的字段:
SQL> select * from user_ind_columns where
index_name=upper('&index_name');
我们可以通过类似下面的语句来查看一个表的索引的基本情况:
select user_ind_columns.index_name,user_ind_columns.column_name,
user_ind_columns.column_position,user_indexes.uniqueness
from user_ind_columns,user_indexes
where user_ind_columns.index_name = user_indexes.index_name
and user_ind_columns.table_name = ‘你想要查询的表名字’;
通过这条SQL语句我们能查看到一个表的具体的索引的情况,如果你想对这表的索引进行进一步的探究你应该到user_indexes中去具体的看以下这个索引的基本情况。
完整性约束
DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST
DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS
显示有关列的相关约束的一般信息。
ALL_CONS_COLUMNS 视图和DBA_CONS_COLUMNS 视图与USER_CONS_COLUMNS有相同的列定义。
ALL_CONS_COLUMNS 视图能够显示用户可以访问的所有表上约束的列信息,而不管所有者是谁。
DBA_CONS_COLUMNS 视图列出了整个数据库的列级约束信息。
USER_CONS_COLUMNS
user_constraints 和 user_cons_columns表得作用及其联系
user_constraints:
user_cons_columns:
是表约束字段的视图,说明表中的和约束相关的列参与了哪些约束。这些约束有主键约束,外键约束,索引约束.
两者可以通过(owner,constraint_name,table_name)关联:
select
a.owner
外键拥有者,
a.table_name
外键表,
substr(c.column_name,1,127)
外键列,
b.owner
主键拥有者,
b.table_name
主键表,
substr(d.column_name,1,127)
主键列
from
user_constraints a,
user_constraints
b,
user_cons_columns
c,
user_cons_columns
d
where
and a.constraint_type='R'
and
b.constraint_type='P'
and
a.r_owner=b.owner
and
a.constraint_name=c.constraint_name
and
b.constraint_name=d.constraint_name
and
a.owner=c.owner
and
a.table_name=c.table_name
and
b.owner=d.owner
and
b.table_name=d.table_name
数据字典表列说明:
desc user_constraints
Name
-----------------
OWNER