是否有某種方法可以使用SQL * Plus獲取特定表上所有索引的列表?如何在SQL * Plus中查看所有索引(包括隱式索引)的列表?
我所創建的表
CREATE TABLE temp(
id NUMBER PRIMARY KEY,
name VARCHAR2(20));
應該有在主鍵(id
)創建的隱式索引。我如何看到該索引?
SELECT * FROM all_indexes WHERE table_name = 'temp';
給
沒有行選擇
是否有某種方法可以使用SQL * Plus獲取特定表上所有索引的列表?如何在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'
這對於您可能在多個模式中具有相同表名的情況很有用。
另外,請記住,甲骨文存儲表名稱爲大寫,所以在你的榜樣,你需要做的:
select * from all_indexes where table_name = 'TEMP';
SELECT * from USER_INDEXES
WHERE TABLE_NAME = UPPER('YourTableName')
只有當他以YourTableName的模式所有者身份登錄時纔有效。 – dcp 2010-08-11 12:46:46
請以大寫字母寫你的表名
或者
SELECT * FROM all_indexes WHERE lower(table_name) = 'temp';
如果你想顯示數據庫中的所有索引,你可以嘗試。
use information_schema;
SELECT * FROM statistics;
這樣的表以大寫形式存儲嘗試select * from all_indexes where table_name ='TEMP'; – 2010-08-11 12:55:04
@Michael Pakhantsov,@dcp:謝謝!使用大寫,我看到索引。 – Moeb 2010-08-11 13:07:51