50.26. pg_index

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

Таблица 50.26. Столбцы pg_index

Тип столбца

Описание

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

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

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

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

indnattsint2

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

indnkeyattsint2

Число ключевых столбцов в индексе, без учёта неключевых столбцов, которые хранятся в индексе, но не учитываются в его семантике

indisuniquebool

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

indisprimarybool

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

indisexclusionbool

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

indimmediatebool

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

indisclusteredbool

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

indisvalidbool

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

indcheckxminbool

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

indisreadybool

Если true, индекс готов к добавлению данных. Значение false означает, что индекс игнорируется операциями INSERT/UPDATE.

indislivebool

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

indisreplidentbool

Если true, этот индекс выбран в качестве «идентификатора реплики» командой ALTER TABLE ... REPLICA IDENTITY USING INDEX ...

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

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

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

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

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

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

indoptionint2vector

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

indexprspg_node_tree

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

indpredpg_node_tree

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


close