受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

52.26. pg_index #

目录pg_index包含关于索引的部分信息。 其他信息大部分在pg_class中。

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

该值只用于唯一索引。如果为 false,则该唯一索引会将 null 值视为不同值(因此索引中可以包含多个 null 值,这是 PostgreSQL 的默认行为)。 如果为 true,则会将 null 值视为相等(因此索引中只能包含一个 null 值)。

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

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中每一个为0的项,这个列表中都有一个元素。如果所有的索引属性都是简单引用,此列为空。

indpred pg_node_tree

部分索引谓词的表达式树(以nodeToString()形式)。如果不是部分索引,此列为空。


提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。