pg_index
   The catalog pg_index contains part of the information
   about indexes.  The rest is mostly in
   pg_class.
  
Table 51.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.
       |