Skip to content

53.26.pg_index#

目录pg_index包含有关索引的部分信息。其余信息主要位于pg_class中。

表 53.26.pg_index

列类型

说明

indexrelid oid(引用 pg_class.oid

此索引的 pg_class 条目的 OID

indrelid oid(引用 pg_class.oid

此索引所属表的 pg_class 条目的 OID

indnatts int2

索引中的列总数(重复 pg_class.relnatts);此数字包括键属性和包含的属性

indnkeyatts int2

索引中的键列数,不计入任何包含的列(仅存储且不参与索引语义)

indisunique bool

如果为真,则这是一个唯一索引

indnullsnotdistinct bool

此值仅用于唯一索引。如果为假,则此唯一索引将把空值视为不同(因此索引可以在一列中包含多个空值,这是 PostgreSQL 的默认行为)。如果为真,则它将把空值视为相等(因此索引在一列中只能包含一个空值)。

indisprimary bool

如果为真,则此索引表示表的唯一键(当此值为真时,indisunique 始终应为真)

indisexclusion bool

如果为真,则此索引支持排除约束

indimmediate bool

如果为真,则在插入时立即执行唯一性检查(如果 indisunique 不为真,则不相关)

indisclustered bool

如果为真,则表最后在此索引上进行聚类

indisvalid bool

如果为真,则索引当前对查询有效。如果为假,则索引可能不完整:它仍必须由 INSERT/UPDATE 操作进行修改,但不能安全地用于查询。如果它唯一,则唯一性属性也不能保证为真。

indcheckxmin bool

如果为真,则查询不得使用索引,直到此 pg_index 行的 xmin 低于其 TransactionXmin 事件范围,因为表可能包含断开的 HOT 链,其中包含不兼容的行,它们可见

indisready bool

如果为真,则索引当前可用于插入。如果为假,则索引必须被 INSERT/UPDATE 操作忽略。

indislive bool

如果为假,则索引正在删除过程中,并且应在所有情况下(包括 HOT 安全决策)中忽略它

indisreplident bool

如果为真,则此索引已被选为 副本标识,使用 ALTER TABLE ... REPLICA IDENTITY USING INDEX ...

indkey int2vector (引用 pg_attribute.attnum)

这是一个 indnatts 值的数组,表示此索引索引哪些表列。例如,1 3 的值表示第一个和第三个表列构成索引条目。键列位于非键(包含)列之前。此数组中的零表示相应的索引属性是对表列的表达式,而不是简单的列引用。

indcollation oidvector (引用 pg_collation.oid)

对于索引键中的每一列(indnkeyatts 值),它包含要用于索引的校对的 OID,如果列不是可校对数据类型,则为零。

indclass oidvector (引用 pg_opclass.oid)

对于索引键中的每一列(indnkeyatts 值),它包含要使用的操作符类的 OID。有关详细信息,请参见 pg_opclass

indoption int2vector

这是一个 indnkeyatts 值的数组,用于存储每列标志位。标志位的含义由索引的访问方法定义。

indexprs pg_node_tree

对于不是简单列引用的索引属性,以 nodeToString() 表示形式显示表达式树。这是 indkey 中每个零条目的一个元素列表。如果所有索引属性都是简单引用,则为 Null。

indpred pg_node_tree

对于部分索引谓词,以 nodeToString() 表示形式显示表达式树。如果不是部分索引,则为 Null。