oracle数据库中如何查看已经创建的索引信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库中如何查看已经创建的索引信息?相关的知识,希望对你有一定的参考价值。

oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:

1. 根据表名,查询一张表的索引

select * from user_indexes where table_name=upper('表名');

2. 根据索引号,查询表索引字段

select * from user_ind_columns where index_name=('索引名');

3.根据索引名,查询创建索引的语句

select dbms_metadata.get_ddl('INDEX','索引名', ['用户名']) from dual ; --['用户名']可省,默认为登录用户

PS:dbms_metadata.get_ddl还可以得到建表语句,如:

SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用户名']) FROM DUAL ; //取单个表的建表语句,['用户名']可不输入,默认为登录用户
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用户下所有表的建表语句

当然,也可以用pl/sql developer工具来查看相关的表的各种信息。

参考技术A 可以查看数据字典 dba_indexes all_indexes user_indexes 来查看索引这三个字典都可以查到执行查询的当前用户的索引信息,不同的是查询范围依次减少 user_indexes 只能看到当前用户的索引对象,还可以结合dba_ind_columns(all_\user_)视图来查看更详细的信息 参考技术B 如果不太熟悉oracle,建议使用工具软件,如pl/sql developer,连接以后,选择查看索引对象。 参考技术C 你也可以查看EM,在Administration中Schema对象中Database Objects下有个Indexes,里面是各用户表的索引信息,很全很清晰的。 参考技术D select * from all_objects where object_type='INDEX' AND OWNER='SCOTT';
OR
SELECT * from all_indexes;

怎么查看索引oracle,建索引

参考技术A 一、查看和建立索引
select * from user_indexes where table_name = 'student'
create index i_student_num on student(num)

二、使用索引的注意点
①类型匹配
若student中num列是varchar类型,语句select * from student where num = 100
该语句被转化为select * from student where to_number(num) = 100,该列的索引就失效了。

②避免索引列参与计算
索引失效:select * from student where num * 10 > 10000
索引有效:select * from student where num > 10000 / 10

③不要对索引列使用IS NULL或IS NOT NULL
原则上对某一个列建立索引的时候,该列就不应该允许为空。
索引失效:select * from student where num is null

以上是关于oracle数据库中如何查看已经创建的索引信息?的主要内容,如果未能解决你的问题,请参考以下文章

查看Oracle的表中有哪些索引

如何查看oracle 用户权限

oracle中,索引是干啥用的?

如何查看oracle失效的索引

在oracle中如何查询一张表的所有数据结构,包括字段,视图,索引,约束

mysql怎么看索引状态