Как найти все индексы, доступные для таблицы в DB2 - PullRequest
12 голосов
/ 20 мая 2010

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

Ответы [ 7 ]

27 голосов
/ 20 мая 2010
db2 "select * from syscat.indexes where tabname   = 'your table name here' \
                                  and   tabschema = 'your schema name here'"
15 голосов
/ 20 мая 2010

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

DESCRIBE INDEXES FOR TABLE SCHEMA.TABLE SHOW DETAIL
1 голос
/ 21 апреля 2016

Это зависит от того, какую версию 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, и она автоматически добавляется в начало всех моих запросов.

1 голос
/ 05 февраля 2016

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

select * from user_objects
where object_type='INDEX'

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

select * from USER_IND_COLUMNS where TABLE_NAME='my_table'
1 голос
/ 31 декабря 2013

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

describe indexes for table schemaname.tablename show detail
0 голосов
/ 09 апреля 2018

Для проверки индексов таблицы в IBM Db2 on Cloud (ранее DashDb) это должен сделать следующий запрос:

SELECT * FROM SYSCAT.INDEXES WHERE TABNAME = 'my_tablename' AND TABSCHEMA = 'my_table_schema'

Вы также можете использовать проверку по имени индекса:

SELECT COUNT(*) FROM SYSCAT.INDEXES WHERE TABNAME = 'my_tablename' AND TABSCHEMA = 'my_table_schema' AND INDNAME='index_name'

Тот же результат может быть достигнут с помощью SYSIBM.SYSINDEXES. Однако на эту таблицу нет прямой ссылки на странице документации по продукту.

SELECT COUNT(*) FROM SYSIBM.SYSINDEXES WHERE TBNAME = 'my_tablename' AND TBCREATOR = 'my_table_schema' AND NAME='my_index_name'

См. Представление каталога SYSCAT.INDEXES .

0 голосов
/ 20 июня 2013

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

Просто щелкните правой кнопкой мыши по таблице и выберите «Создать DDL / сценарии».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...