Как найти все индексы, доступные в таблице в 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 и автоматически добавил ее к вершине всех моих запросов.