是否有某种方法可以使用 SQL*Plus 获取特定表上所有索引的列表?
我创建了一个表
CREATE TABLE temp(
id NUMBER PRIMARY KEY,
name VARCHAR2(20));
应该在主键上创建一个隐式索引(
id
)。我怎样才能看到该索引?
SELECT * FROM all_indexes WHERE table_name = 'temp';
给予
未选择行
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';
SELECT * from USER_INDEXES
WHERE TABLE_NAME = UPPER('YourTableName')
请用大写写下您的桌名
或
SELECT * FROM all_indexes WHERE lower(table_name) = 'temp';
如果你想显示数据库中的所有索引,你可以尝试。
use information_schema;
SELECT * FROM statistics;
始终以大写字母书写表名称或模式名称以获取信息。
select * from all_indexes where OWNER= UPPER('your_schema_name')