51.26. pg_index#

51.26. pg_index

51.26. pg_index

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

Таблица 51.26. pg_index Колонки

Тип столбца

Описание

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). Если значение true, нулевые значения будут считаться равными (таким образом, индекс может содержать только одно нулевое значение в столбце).

indisprimary bool

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

indisexclusion bool

Если значение true, то данный индекс поддерживает исключающее ограничение

indimmediate bool

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

indisclustered 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 ... REPLICA IDENTITY USING INDEX ....

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

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

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

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

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

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

indoption int2vector

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

indexprs pg_node_tree

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

indpred pg_node_tree

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