53.26. pg_index
В каталоге pg_index содержится часть информации об индексах. Остальная информация в основном находится в pg_class.
Таблица 53.26. Столбцы pg_index
| Name | Тип | Ссылки | Описание |
|---|---|---|---|
indexrelid | oid | | OID записи в pg_class для этого индекса |
indrelid | oid | | OID записи в pg_class для таблицы, к которой относится этот индекс |
indnatts | int2 | Общее число столбцов в индексе (повторяет значение pg_class.relnatts). В это число входят и ключевые, и неключевые атрибуты. | |
indnkeyatts | int2 | Число ключевых столбцов в индексе, без учёта неключевых столбцов, которые хранятся в индексе, но не учитываются в его семантике | |
indisunique | bool | Если true, это уникальный индекс | |
indisprimary | bool | Если true, этот индекс представляет первичный ключ таблицы (в этом случае и в поле indisunique должно быть значение 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 | | Это массив из indnatts значений, указывающих, какие столбцы таблицы индексирует этот индекс. Например, значения 1 3 будут означать, что в индекс входят первый и третий столбцы таблицы. Ключевые столбцы указываются перед неключевыми (включаемыми) столбцами. Ноль в этом массиве означает, что соответствующий атрибут индекса определяется выражением со столбцами таблицы, а не просто ссылкой на столбец. |
indcollation | oidvector | | Для каждого столбца в ключе индекса этот массив (из indnkeyatts значений) содержит OID правила сортировки для применения в этом индексе либо 0, если тип данных этого столбца не сортируемый. |
indclass | oidvector | | Для каждого столбца в ключе индекса этот массив (из indnkeyatts значений) содержит OID применяемых классов операторов. Подробнее это рассматривается в описании pg_opclass. |
indoption | int2vector | Это массив из indnkeyatts значений, в которых хранятся битовые флаги для отдельных столбцов. Значение этих флагов определяется методом доступа конкретного индекса. | |
indexprs | pg_node_tree | Деревья выражений (в представлении nodeToString()) для атрибутов индекса, не являющихся простыми ссылками на столбцы. Этот список содержит один элемент для каждого нулевого значения в indkey. Значением может быть NULL, если все атрибуты индекса представляют собой простые ссылки. | |
indpred | pg_node_tree | Дерево выражения (в представлении nodeToString()) для предиката частичного индекса, либо NULL, если это не частичный индекс. |
53.26. pg_index
The catalog pg_index contains part of the information about indexes. The rest is mostly in pg_class.
Table 53.26. pg_index Columns
| Name | Type | References | Description |
|---|---|---|---|
indexrelid | oid | | The OID of the pg_class entry for this index |
indrelid | oid | | The OID of the pg_class entry for the table this index is for |
indnatts | int2 | The total number of columns in the index (duplicates pg_class.relnatts); this number includes both key and included attributes | |
indnkeyatts | int2 | The number of key columns in the index, not counting any included columns, which are merely stored and do not participate in the index semantics | |
indisunique | bool | If true, this is a unique index | |
indisprimary | bool | If true, this index represents the primary key of the table (indisunique should always be true when this is true) | |
indisexclusion | bool | If true, this index supports an exclusion constraint | |
indimmediate | bool | If true, the uniqueness check is enforced immediately on insertion (irrelevant if indisunique is not true) | |
indisclustered | bool | If true, the table was last clustered on this index | |
indisvalid | bool | If true, the index is currently valid for queries. False means the index is possibly incomplete: it must still be modified by INSERT/UPDATE operations, but it cannot safely be used for queries. If it is unique, the uniqueness property is not guaranteed true either. | |
indcheckxmin | bool | If true, queries must not use the index until the xmin of this pg_index row is below their TransactionXmin event horizon, because the table may contain broken HOT chains with incompatible rows that they can see | |
indisready | bool | If true, the index is currently ready for inserts. False means the index must be ignored by INSERT/UPDATE operations. | |
indislive | bool | If false, the index is in process of being dropped, and should be ignored for all purposes (including HOT-safety decisions) | |
indisreplident | bool | If true this index has been chosen as “replica identity” using ALTER TABLE ... REPLICA IDENTITY USING INDEX ... | |
indkey | int2vector | | This is an array of indnatts values that indicate which table columns this index indexes. For example a value of 1 3 would mean that the first and the third table columns make up the index entries. Key columns come before non-key (included) columns. A zero in this array indicates that the corresponding index attribute is an expression over the table columns, rather than a simple column reference. |
indcollation | oidvector | | For each column in the index key (indnkeyatts values), this contains the OID of the collation to use for the index, or zero if the column is not of a collatable data type. |
indclass | oidvector | | For each column in the index key (indnkeyatts values), this contains the OID of the operator class to use. See pg_opclass for details. |
indoption | int2vector | This is an array of indnkeyatts values that store per-column flag bits. The meaning of the bits is defined by the index's access method. | |
indexprs | pg_node_tree | Expression trees (in nodeToString() representation) for index attributes that are not simple column references. This is a list with one element for each zero entry in indkey. Null if all index attributes are simple references. | |
indpred | pg_node_tree | Expression tree (in nodeToString() representation) for partial index predicate. Null if not a partial index. |