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