Выбор столбцов индекса таблицы

#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';