支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 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

51.26. pg_index #

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

表 51.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。


提交更正

如果您在文档中发现任何不正确、与特定功能体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。