有没有办法使用SQL * Plus获取特定表上所有索引的列表?
我创建了一个表
CREATE TABLE temp(
id NUMBER PRIMARY KEY,
name VARCHAR2(20));
应该在主键(id
)上创建隐式索引。我怎么能看到那个索引?
SELECT * FROM all_indexes WHERE table_name = 'temp';
给出
未选择任何行
答案 0 :(得分:23)
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';
答案 1 :(得分:1)
SELECT * from USER_INDEXES
WHERE TABLE_NAME = UPPER('YourTableName')
答案 2 :(得分:0)
请以大写
编写您的表名OR
SELECT * FROM all_indexes WHERE lower(table_name) = 'temp';
答案 3 :(得分:0)
如果要在数据库中显示所有索引,可以尝试。
use information_schema;
SELECT * FROM statistics;