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 означает, что индекс должен игнорироваться операциями |
indislive |
bool |
Если false, индекс удаляется и должен игнорироваться для всех целей (включая решения по безопасности HOT) |
indisreplident |
bool |
Если true, этот индекс был выбран как «идентичность реплики» с помощью |
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()) для предиката частичного индекса. Нулевой, если не частичный индекс |