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()) для предиката частичного индекса. Нулевой, если не частичный индекс |