Как узнать отключенные / включенные индексы в PostgreSQL и Oracle - PullRequest
0 голосов
/ 04 февраля 2020

Хотелось бы узнать список индексов, которые отключены / включены в PostgreSQL и Oracle. Может кто-нибудь предложить мне запрос?

У меня есть запрос для SQL Сервер вроде этого

SELECT *
FROM sys.indexes I
INNER JOIN sys.tables T ON I.object_id = T.object_id
WHERE I.type_desc = 'NONCLUSTERED'
AND I.name IS NOT NULL
AND I.is_disabled = 1` 

Я ищу аналогичный запрос для PostgreSQL и Oracle.

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Вы можете использовать это для postgres:

SELECT
    trel.relname AS table_name,
    irel.relname AS index_name,
    string_agg(a.attname, ', ' ORDER BY c.ordinality) AS columns
FROM pg_index AS i
         JOIN pg_class AS trel ON trel.oid = i.indrelid
         JOIN pg_class AS irel ON irel.oid = i.indexrelid
         JOIN pg_attribute AS a ON trel.oid = a.attrelid
         JOIN LATERAL unnest(i.indkey)
    WITH ORDINALITY AS c(colnum, ordinality)
              ON a.attnum = c.colnum
WHERE i.indisvalid -- WHERE not i.indisvalid
GROUP BY i, trel.relname, irel.relname;

Обратите внимание, что отключение индекса в postgres означает постоянные обновления без использования для запросов.

1 голос
/ 04 февраля 2020

Использовать таблицу UserIndexes

     select INDEX_NAME, TABLE_OWNER, 
      TABLE_NAME, UNIQUENESS from 
       USER_INDEXES u inner join  
        all_tables a
       On u.table_name=a.table_name
        and u.table_owner=a.owner

Для всех индексов заменить имя таблицы на all_indexes и присоединиться к dba_tables

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