2010-08-11 7 views
9

C'è un modo per ottenere un elenco di tutti gli indici su una determinata tabella usando SQL * Plus?Come visualizzare un elenco di tutti gli indici (compresi quelli impliciti) in SQL * Plus?

ho creato una tabella

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

Ci dovrebbe essere un indice implicito creato sulla chiave primaria (id). Come posso vedere quell'indice?

SELECT * FROM all_indexes WHERE table_name = 'temp'; 

Nessuna riga selezionata

+1

tali tabelle memorizzate in maiuscolo prova selezionare * da all_indexes dove table_name = 'TEMP'; –

+0

@ Michael Pakhantsov, @dcp: grazie! Usando lettere maiuscole, vedo gli indici. – Moeb

risposta

15

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table '

Nota: Se si vuole limitare la ricerca a uno schema specifico, si può anche fare:

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

Questo è utile in situazioni in cui si potrebbe avere lo stesso nome di tabella in più schemi.

Inoltre, tenete a mente che i negozi di Oracle i nomi delle tabelle come maiuscolo, così nel tuo esempio è necessario fare:

select * from all_indexes where table_name = 'TEMP'; 
0
SELECT * from USER_INDEXES 
WHERE TABLE_NAME = UPPER('YourTableName') 
+0

Questo funziona solo se è connesso come proprietario dello schema per YourTableName. – dcp

0

Si prega di scrivere il nome della tabella in maiuscolo

OR

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

Se si desidera visualizzare tutti gli indici in un database, è possibile provare.

use information_schema; 
SELECT * FROM statistics;