Postgresql 中文操作指南

53.26. pg_index #

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

Table 53.26. pg_index Columns

Column Type

Description

indexrelid oid (参照 pg_class . oid )该索引的 pg_class 条目的 OID

indrelid oid (参照 pg_class . oid )该索引所属表的 pg_class 条目的 OID

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

indnkeyatts int2 索引中的 key columns 数量,不记入任何 included columns ,这些 included columns 只是存储,不参与索引语义

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

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

indisprimary bool 如果为真,此索引表示表的唯一键(如果为真, indisunique 应始终为真)

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

indimmediate bool 如果为真,则唯一性检查将在插入时立即执行(如果 indisunique 为假则无关紧要)

indisclustered bool 如果为真,则表上一次在此索引上聚类

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

indcheckxmin bool 如果为真,则查询不得在此 pg_index 行的 xmin 低于其 TransactionXmin 事件视界之前使用索引,因为表可能包含破坏的 HOT chains ,其中包含他们可以看到的不兼容行

indisready bool 如果为真,则索引当前已准备好插入。假表示索引必须被 INSERT / UPDATE 操作忽略。

indislive bool 如果为假,则索引正在被删除,并且应该出于所有目的被忽略(包括热安全决策)

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。