51.26. 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.
       |