The catalog pg_index contains part of the information about indexes. The rest is mostly in pg_class.
Table 44-19. pg_index Columns
Name | Type | References | Description |
---|---|---|---|
indexrelid | oid | pg_class.oid | The OID of the pg_class entry for this index |
indrelid | oid | pg_class.oid | The OID of the pg_class entry for the table this index is for |
indnatts | int2 | The number of columns in the index (duplicates pg_class.relnatts) | |
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) | |
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 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 | |
indkey | int2vector | pg_attribute.attnum | 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 key. A zero in this array indicates that the corresponding index attribute is an expression over the table columns, rather than a simple column reference |
indclass | oidvector | pg_opclass.oid | For each column in the index key, this contains the OID of the operator class to use. See pg_opclass for details |
indoption | int2vector | This is an array of indnatts values that store per-column flag bits. The meaning of the bits is defined by the index's access method | |
indexprs | text | 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 | text | Expression tree (in nodeToString() representation)
for partial index predicate. NULL if not a partial index |