如何查看SQL*Plus中所有索引(包括隐式索引)的列表?

问题描述 投票:0回答:5

是否有某种方法可以使用 SQL*Plus 获取特定表上所有索引的列表?

我创建了一个表

CREATE TABLE temp(
id NUMBER PRIMARY KEY,
name VARCHAR2(20));

应该在主键上创建一个隐式索引(

id
)。我怎样才能看到该索引?

SELECT * FROM all_indexes WHERE table_name = 'temp';

给予

未选择行

sql indexing sqlplus
5个回答
34
投票

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table
'

注意: 如果您想将搜索限制为特定模式,您也可以这样做:

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table' AND OWNER = 'your_owner'

这在多个模式中可能具有相同表名的情况下非常有用。

另外,请记住 Oracle 将表名存储为大写,因此在您的示例中您需要执行以下操作:

select * from all_indexes where table_name = 'TEMP';

2
投票
SELECT * from USER_INDEXES
WHERE TABLE_NAME = UPPER('YourTableName')

0
投票

请用大写写下您的桌名

SELECT * FROM all_indexes WHERE lower(table_name) = 'temp';

0
投票

如果你想显示数据库中的所有索引,你可以尝试。

use information_schema;
SELECT * FROM statistics;

0
投票

始终以大写字母书写表名称或模式名称以获取信息。

select * from  all_indexes where OWNER= UPPER('your_schema_name')
© www.soinside.com 2019 - 2024. All rights reserved.