2010-08-11 8 views
9

Gibt es eine Möglichkeit, eine Liste aller Indizes für eine bestimmte Tabelle mit SQL * Plus zu erhalten?Wie sehen Sie eine Liste aller Indizes (einschließlich impliziter) in SQL * Plus?

habe ich eine Tabelle

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

Es soll ein impliziter Index auf dem Primärschlüssel (id) erstellt werden. Wie kann ich diesen Index sehen?

SELECT * FROM all_indexes WHERE table_name = 'temp'; 

gibt

keine Zeilen

+1

solche Tabellen in Großbuchstaben gespeichert versuchen Sie * aus all_indexes where table_name = 'TEMP'; –

+0

@Michael Pakhantsov, @dcp: Danke! In Großbuchstaben sehe ich die Indizes. – Moeb

Antwort

15

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table 'ausgewählt

Hinweis: Wenn Sie die Suche auf ein bestimmtes Schema beschränken möchten, können Sie auch tun:

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

Dies ist nützlich in Situationen, in denen Sie möglicherweise denselben Tabellennamen in mehreren Schemas haben.

Auch bedenken Sie, dass Oracle speichert die Tabellennamen als Großbuchstaben, so in Ihrem Beispiel was Sie tun müssen:

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

Das funktioniert nur, wenn er als Schema-Besitzer für YourTableName angemeldet ist. – dcp

0

Bitte geben Sie Ihre Tabellennamen in Großbuchstaben

ODER

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

Wenn Sie alle Indizierung in einer Datenbank anzeigen möchten, können Sie versuchen.

use information_schema; 
SELECT * FROM statistics;