PostgreSQL 15 ← 14
← 目录图谱 / pg_index
SYSTEM CATALOG · 系统目录
pg_index
The catalog pg_index contains part of the information about indexes. The rest is mostly in pg_class.
已与 PostgreSQL 18.6 实例逐字段核对 · 原始实测记录 ↗
字段结构 PostgreSQL 18
pg_indexPostgreSQL 19 beta 3 是预发布快照,结构在正式发布前仍可能变化。
| 字段 / COLUMN | 类型 / TYPE | 说明 / DESCRIPTION |
|---|---|---|
indexrelid |
oidNOT NULL |
The OID of the pg_class entry for this index引用:pg_class.oid |
indrelid |
oidNOT NULL |
The OID of the pg_class entry for the table this index is for引用:pg_class.oid |
indnatts |
smallintNOT NULL文档原写法:int2 |
The total number of columns in the index (duplicates pg_class.relnatts); this number includes both key and included attributes |
indnkeyatts |
smallintNOT NULL文档原写法: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 |
booleanNOT NULL文档原写法:bool |
If true, this is a unique index |
indnullsnotdistinct |
booleanNOT NULL文档原写法:bool |
This value is only used for unique indexes. If false, this unique index will consider null values distinct (so the index can contain multiple null values in a column, the default PostgreSQL behavior). If it is true, it will consider null values to be equal (so the index can only contain one null value in a column). |
indisprimary |
booleanNOT NULL文档原写法:bool |
If true, this index represents the primary key of the table (indisunique should always be true when this is true) |
indisexclusion |
booleanNOT NULL文档原写法:bool |
If true, this index supports an exclusion constraint |
indimmediate |
booleanNOT NULL文档原写法:bool |
If true, the uniqueness check is enforced immediately on insertion (irrelevant if indisunique is not true) |
indisclustered |
booleanNOT NULL文档原写法:bool |
If true, the table was last clustered on this index |
indisvalid |
booleanNOT NULL文档原写法: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 |
booleanNOT NULL文档原写法: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 |
booleanNOT NULL文档原写法:bool |
If true, the index is currently ready for inserts. False means the index must be ignored by INSERT/UPDATE operations. |
indislive |
booleanNOT NULL文档原写法:bool |
If false, the index is in process of being dropped, and should be ignored for all purposes (including HOT-safety decisions) |
indisreplident |
booleanNOT NULL文档原写法:bool |
If true this index has been chosen as “replica identity” using ALTER TABLE ... REPLICA IDENTITY USING INDEX ... |
indkey |
int2vectorNOT NULL |
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.引用:pg_attribute.attnum |
indcollation |
oidvectorNOT NULL |
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.引用:pg_collation.oid |
indclass |
oidvectorNOT NULL |
For each column in the index key (indnkeyatts values), this contains the OID of the operator class to use. See pg_opclass for details.引用:pg_opclass.oid |
indoption |
int2vectorNOT NULL |
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. |
标记“隐式列”的字段不包含在 SELECT * 中;部分早期统计视图由同版本源码补全,额外来源会显示在字段说明中。
通用系统列 6
PostgreSQL 提供的系统属性,通常不在 SELECT * 中展开。单独保留,不与普通字段混算。
| 字段 | 类型 | attnum |
|---|---|---|
tableoid | oid | -6 |
cmax | cid | -5 |
xmax | xid | -4 |
cmin | cid | -3 |
xmin | xid | -2 |
ctid | tid | -1 |
字段演化矩阵
悬停查看字段类型存在新增 / 类型或属性变化移除
9.0 是收录基线;基线中已存在的字段不标记为新增。矩阵按字段名称对齐,重命名显示为旧字段移除与新字段新增。
演化时间线
相邻大版本的变化PostgreSQL 11 ← 10
PostgreSQL 10 ← 9.6
PostgreSQL 9.4 ← 9.3
PostgreSQL 9.3 ← 9.2
PostgreSQL 9.2 ← 9.1
PostgreSQL 9.1 ← 9.0
比较任意两个版本
选择两个版本,查看字段的新增、移除与类型变化。交互比较需要 JavaScript;演化时间线可直接阅读。