2010-08-11 38 views
9

是否有某種方法可以使用SQL * Plus獲取特定表上所有索引的列表?如何在SQL * Plus中查看所有索引(包括隱式索引)的列表?

我所創建的表

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

應該有在主鍵(id)創建的隱式索引。我如何看到該索引?

SELECT * FROM all_indexes WHERE table_name = 'temp'; 

沒有行選擇

+1

這樣的表以大寫形式存儲嘗試select * from all_indexes where table_name ='TEMP'; – 2010-08-11 12:55:04

+0

@Michael Pakhantsov,@dcp:謝謝!使用大寫,我看到索引。 – Moeb 2010-08-11 13:07:51

回答

15

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'; 
0
SELECT * from USER_INDEXES 
WHERE TABLE_NAME = UPPER('YourTableName') 
+0

只有當他以YourTableName的模式所有者身份登錄時纔有效。 – dcp 2010-08-11 12:46:46

0

請以大寫字母寫你的表名

或者

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

如果你想顯示數據庫中的所有索引,你可以嘗試。

use information_schema; 
SELECT * FROM statistics;