pg_index#

Каталог pg_index содержит часть информации об индексах. Остальное в основном находится в pg_class.

Столбец

Тип данных

Описание

indexrelid

oid ссылается на (pg_class.oid)

OID записи pg_class для этого индекса

indrelid

oid ссылается на (pg_class.oid)

OID записи pg_class для таблицы, для которой этот индекс

indnatts

int2

Общее количество столбцов в индексе (дублирует pg_class.relnatts); это число включает как ключ, так и включенные атрибуты

indnkeyatts

int2

Количество ключевых столбцов в индексе, не считая включенных столбцов, которые просто хранятся и не участвуют в семантике индекса

indisunique

bool

Если true, это уникальный индекс

indnullsnotdistinct

bool

Это значение используется только для уникальных индексов. Если false, этот уникальный индекс будет считать нулевые значения отличными (так что индекс может содержать несколько нулевых значений в столбце, поведение PostgreSQL по умолчанию). Если он равен, он будет считать нулевые значения равными (так что индекс может содержать только одно нулевое значение в столбце)

indisprimary

bool

Если true, этот индекс представляет первичный ключ таблицы (indisunique всегда должен быть true, когда он равен true)

indisexclusion

bool

Если true, этот индекс поддерживает ограничение исключения

indiimmediate

bool

Если true, проверка уникальности выполняется сразу после вставки (не имеет значения, если indisunique не является true)

разгруппированная

bool

Если true, таблица в последний раз кластеризовалась по этому индексу

indisvalid

bool

Если true, то индекс в настоящее время действителен для запросов. False означает, что индекс может быть неполным: он все еще должен быть изменен операциями INSERT/UPDATE, но его нельзя безопасно использовать для запросов. Если он уникален, свойство уникальности также не гарантировано истинным

indcheckxmin

bool

Если true, запросы не должны использовать индекс, пока xmin этой строки pg_index не окажется ниже их горизонта событий TransactionXmin, потому что таблица может содержать разбитые цепочки HOT с несовместимыми строками, которые они могут видеть

indisready

bool

Если true, индекс в данный момент готов к вставкам. False означает, что индекс должен игнорироваться операциями INSERT/UPDATE

indislive

bool

Если false, индекс удаляется и должен игнорироваться для всех целей (включая решения по безопасности HOT)

indisreplident

bool

Если true, этот индекс был выбран как «идентичность реплики» с помощью ALTER TABLE… Идентичность реплики с использованием индекса…

indkey

int2vector (ссылается на pg_attribute.attnum)

Это массив значений indnatts, которые указывают, какие столбцы таблицы индексирует этот индекс. Например, значение 13 означает, что первый и третий столбцы таблицы составляют записи индекса. Ключевые столбцы предшествуют неключевым (включенным) столбцам. Ноль в этом массиве указывает на то, что соответствующий атрибут индекса является выражением над столбцами таблицы, а не простой ссылкой на столбец

indcollation

oidvector (ссылается на pg_collation.oid)

Для каждого столбца в ключе индекса (значения indnkeyatts) содержит OID сортировки, которую нужно использовать для индекса, или ноль, если столбец не имеет сортируемого типа данных

indclass

oidvector (ссылается на pg_opclass.oid)

Для каждого столбца в ключе индекса (значения indnkeyatts) содержит OID используемого класса операторов. Подробнее см. в pg_opclass

inadoption

int2vector

Это массив значений indnkeyatts, которые хранят биты флагов для каждого столбца. Значение битов определяется методом доступа индекса

indexprs

pg_node_tree

Деревья выражений (в представлении nodeToString()) для атрибутов индекса, которые не являются простыми ссылками на столбцы. Это список с одним элементом для каждой нулевой записи в indkey. Null, если все атрибуты индекса являются простыми ссылками

indpred

pg_node_tree

Дерево выражений (в представлении nodeToString()) для предиката частичного индекса. Нулевой, если не частичный индекс