Как просмотреть список всех индексов (включая неявные) в SQL * Plus?

есть ли способ получить список всех индексов в конкретной таблице с помощью SQL * Plus?

Я создал таблицу

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

должен быть неявный индекс, созданный на первичном ключе (id). Как я могу видеть этот индекс?

SELECT * FROM all_indexes WHERE table_name = 'temp';

дает

нет выбранных строк

4 ответов


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'

это полезно в ситуациях, когда у вас может быть одно и то же имя таблицы в нескольких схемах.

кроме того, имейте в виду, что Oracle хранит имена таблиц в верхнем регистре, так что в вашем примере вам нужно сделать:

select * from all_indexes where table_name = 'TEMP';

SELECT * from USER_INDEXES
WHERE TABLE_NAME = UPPER('YourTableName')

пожалуйста, напишите ваше имя таблицы в верхнем регистре

или

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

Если вы хотите отобразить всю индексацию в базе данных, вы можете попробовать.

use information_schema;
SELECT * FROM statistics;