Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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 行的 TransactionXmin 事件地平线与 xmin 地于表的 HOT 链 中他们可见的不兼容行不相容之前,才能使用索引

indisready bool

如果为真,则索引当前可进行插入。假意味着必须在 INSERT/UPDATE 操作中忽略该索引。

indislive bool

如果为假,则该索引正在被删除,并且应被忽略以用于所有目的(包括 HOT-safety 决策)

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。