Как запросить метаданные индексов в PostgreSQL - PullRequest
5 голосов
/ 10 ноября 2010

Мне нужно иметь возможность запрашивать базу данных PostgreSQL для получения информации о существующих индексах и их деталях.

На SQL Server я могу сделать следующее, чтобы получить список всех таблиц / индексов / столбцов для всех индексов:

select TABLE_NAME, INDEX_NAME, NON_UNIQUE, COLUMN_NAME
from INFORMATION_SCHEMA.STATISTICS
where TABLE_SCHEMA = 'my_schema'
order by TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX

Кажется, что таблица STATISTICS INFORMATION_SCHEMA является расширением SQL Server. Как я могу сделать эквивалент в PostgreSQL?

РЕДАКТИРОВАТЬ: Я специально пытаюсь вернуть денормализованный набор результатов следующим образом

TableName, IndexName, UniqueFl, ColumnName

Таким образом, я получаю строку назад для каждого столбца во всех индексах.

Спасибо, Jon

Ответы [ 4 ]

6 голосов
/ 10 ноября 2010

Какие метаданные вы ищете?

Есть множество отличных вещей, которые вы можете узнать, если знаете, что ищете. Например, вот дамп статистики индекса и метаданных.

SELECT *, pg_size_pretty(pg_relation_size(indexrelname::text))
    FROM pg_stat_all_indexes 
    WHERE schemaname = 'public'

Копание вики postgresql найдет все виды хороших вещей.

5 голосов
/ 10 ноября 2010

Я не думаю, что это возможно из информационной схемы см. это обсуждение . Индексы, созданные не из ограничений, не будут включены в информационную схему.

Однако из системных таблиц вы можете см этот вопрос

2 голосов
/ 24 мая 2013

Запрос, который я использую, чтобы увидеть список индексов и его фактический размер:

SELECT relname AS name, 
reltuples as count, (c.relpages *  (8192 /1024) / 1024 ) as size_mb,
c.relfilenode::regclass, cast(c.oid::regclass as TEXT), c.relnatts, c.relkind
FROM pg_class  c, pg_namespace n 
WHERE 
n.nspname ='MyNamespace' 
and n.oid = c.relnamespace
and c.relkind = 'i'
ORDER BY c.relpages DESC;
0 голосов
/ 10 ноября 2010

Проверьте эти представления в PostgreSQL на предмет статистики:

http://www.postgresql.org/docs/current/static/information-schema.html http://www.postgresql.org/docs/current/static/monitoring-stats.html

...