Как найти все индексы, доступные в таблице в DB2

Как найти все индексы, доступные в таблице в db2?

Ответ 1

db2 "select * from syscat.indexes where tabname   = 'your table name here' \
                                  and   tabschema = 'your schema name here'"

Ответ 2

Вы также можете выполнить:

DESCRIBE INDEXES FOR TABLE SCHEMA.TABLE SHOW DETAIL

Ответ 3

Вы можете получить информацию об индексах с помощью следующей команды.

describe indexes for table schemaname.tablename show detail

Ответ 4

Чтобы увидеть все индексы: -

select * from user_objects
where object_type='INDEX'

Чтобы увидеть индекс и его столбцы в таблице:

select * from USER_IND_COLUMNS where TABLE_NAME='my_table'

Ответ 5

Еще один способ - создать DDL таблицы. Он даст вам полное описание таблицы, включая индекс на ней.

Просто щелкните правой кнопкой мыши по таблице и щелкните по генерации DDL/Scripts.

Работает с большей частью базы данных.

Ответ 6

Это зависит от того, какую версию DB2 вы используете. У нас есть v7r1m0, и следующий запрос работает достаточно хорошо.

WITH IndexCTE (Schema, Table, Unique, Name, Type, Columns) AS
   (SELECT i.table_schema, i.Table_Name, i.Is_Unique, 
           s.Index_Name, s.Index_Type, s.column_names
    FROM qsys2.SysIndexes i
    INNER JOIN qsys2.SysTableIndexStat s
    ON i.table_schema = s.table_schema
    and i.table_name = s.table_name
    and i.index_name = s.index_name)
SELECT * 
FROM IndexCTE 
WHERE schema = 'LIBDEK' 
AND   table = 'ECOMROUT'

Если вы не знакомы с CTE, их стоит узнать. Наши соглашения об именах AS400 ужасны, поэтому я использовал CTE для нормализации имен полей. Я закончил создание библиотеки CTE и автоматически добавил ее к вершине всех моих запросов.