2010-08-11 9 views
9

Czy istnieje sposób, aby uzyskać listę wszystkich indeksów w danej tabeli przy użyciu SQL * Plus?Jak wyświetlić listę wszystkich indeksów (w tym ukrytych) w SQL * Plus?

Stworzyłem tabelę

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

Nie powinno być niejawna indeks tworzony na klucz podstawowy (id). Jak mogę zobaczyć ten indeks?

SELECT * FROM all_indexes WHERE table_name = 'temp'; 

daje

nie wiersze wybrane

+1

takie tabele przechowywane w dużych przypadkach spróbuj wybrać * z all_indexes gdzie table_name = 'TEMP'; –

+0

@Michael Pakhantsov, @dcp: thanks! Używając wielkich liter, widzę indeksy. – Moeb

Odpowiedz

15

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table '

Uwaga: Jeśli chcesz ograniczyć wyszukiwanie do konkretnego schematu, można również zrobić:

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

Jest to przydatne w sytuacjach, gdy możesz mieć tę samą nazwę tabeli w wielu schematach.

Ponadto, należy pamiętać, że sklepy Oracle nazwy tabeli jako wielkie litery, tak w swoim przykładzie trzeba zrobić:

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

Działa to tylko wtedy, gdy jest zalogowany jako właściciel schematu dla YourTableName. – dcp

0

Proszę wpisać nazwę tabeli w górnej przypadku

OR

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

Jeśli chcesz wyświetlić wszystkie indeksy w bazie danych można spróbować.

use information_schema; 
SELECT * FROM statistics; 
Powiązane problemy