29th September 2022: PostgreSQL 15 RC 1 Released!
Supported Versions: Current (14) / 13 / 12 / 11 / 10
Development Versions: 15 / devel
Unsupported versions: 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

3.16. pg_index

pg_index contains part of the information about indexes. The rest is mostly in pg_class.

Table 3-16. 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
indproc regproc pg_proc.oid The function's OID if this is a functional index, else zero
indkey int2vector pg_attribute.attnum This is a vector (array) of up to INDEX_MAX_KEYS values that indicate which table columns this index pertains to. For example a value of 1 3 would mean that the first and the third column make up the index key. For a functional index, these columns are the inputs to the function, and the function's return value is the index key.
indclass oidvector pg_opclass.oid For each column in the index key this contains a reference to the "operator class" to use. See pg_opclass for details.
indisclustered bool   If true, the table was last clustered on this index.
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.)
indreference oid   unused
indpred text   Expression tree (in the form of a nodeToString representation) for partial index predicate. Empty string if not a partial index.