2010-08-11 13 views
9

¿Hay alguna manera de obtener una lista de todos los índices en una tabla particular usando SQL * Plus?¿Cómo ver una lista de todos los índices (incluidos los implícitos) en SQL * Plus?

creé una mesa

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

Debe haber creado un índice implícito en la clave principal (id). ¿Cómo puedo ver ese índice?

SELECT * FROM all_indexes WHERE table_name = 'temp'; 

da

no hay filas seleccionadas

+1

tales tablas almacenadas en mayúsculas try try * de all_indexes donde table_name = 'TEMP'; –

+0

@Michael Pakhantsov, @dcp: ¡gracias! Usando mayúsculas, veo los índices. – Moeb

Respuesta

15

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table '

Nota: Si desea limitar la búsqueda a un esquema específico, también se puede hacer:

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

Esto es útil en situaciones donde puede tener el mismo nombre de tabla en varios esquemas.

Además, tenga en cuenta que Oracle almacena los nombres de tabla en mayúsculas, por lo que en su ejemplo que tiene que hacer:

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

Eso solo funciona si ha iniciado sesión como el propietario del esquema para YourTableName. – dcp

0

Por favor escriba su nombre de la tabla en mayúsculas

O

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

Si desea visualizar toda la indexación en una base de datos, puede intentarlo.

use information_schema; 
SELECT * FROM statistics; 
Cuestiones relacionadas