#sql #oracle
#sql #Oracle #индексирование
Вопрос:
У Oracle есть запрос, который выбирает существующие индексы таблицы. Например:
SELECT * FROM user_indexes WHERE table_name = 'CM_WCEL';
Но мне нужно воссоздать инструкцию создания индекса.
Как я могу получить оставшуюся информацию, такую как затронутые столбцы и т.д.?
Комментарии:
1. Для воссоздания
create index
инструкции лучше использоватьdbms_metadata.get_ddl()
2. вы зарегистрировались
dba_ind_columns
илиuser_ind_columns
3. @a_horse_with_no_name Этот метод возвращает весь ddl, верно? мне нужно проанализировать его после и найти информацию об индексе?
4. Нет, вам не нужно его анализировать, результатом является «оператор создания индекса»
5. выберите DBMS_METADATA.GET_DDL(‘INDEX’,’IWCEL2N’) из DUAL works!
Ответ №1:
Чтобы получить полный DDL для каждого индекса, используйте dbms_metadata.get_ddl()
:
select index_name, dbms_metadata.get_ddl('INDEX', index_name) as ddl
from user_indexes
where table_name = CM_WCEL';
DDL возвращается как CLOB. В зависимости от используемого вами SQL-клиента вам могут потребоваться некоторые изменения конфигурации, чтобы иметь возможность видеть полный код. например, в SQL * Plus вам нужно что-то set long 60000
перед запуском инструкции select.
Ответ №2:
В соответствии с созданием таблицы, приведенные ниже таблицы будут содержать запрошенную информацию.
SELECT *
FROM user_ind_columns
WHERE table_name = 'CM_WCEL';
или
SELECT *
FROM dba_ind_columns
WHERE table_name = 'CM_WCEL';
Ответ №3:
это должно предоставить необходимую информацию:
select index_name, column_name
from user_ind_columns
where table_name = 'CM_WCEL';