更新时间:2024-04-30 GMT+08:00

PG_INDEX

PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。

表1 PG_INDEX字段

名称

类型

描述

indexrelid

oid

此索引的pg_class项的OID。

indrelid

oid

使用该索引的表在pg_class项的OID。

indnatts

smallint

索引中的字段数目。

indisunique

boolean

如果为真,为唯一索引。

indisprimary

boolean

如果为真,该索引为该表的主键。该字段为真时,indisunique也总是为真。

indisexclusion

boolean

如果为真,该索引支持排他约束。

indimmediate

boolean

如果为真,在插入数据时会立即执行唯一性检查。

indisclustered

boolean

如果为真,则该表最后以此索引进行了聚簇。

indisusable

boolean

如果为真,此索引对INSERT/SELECT可用。

indisvalid

boolean

如果为真,则此索引可以用于查询。如果为假,则该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,但不能安全的被用于查询。如果是唯一索引,则唯一属性也不为真。

indcheckxmin

boolean

如果为真,查询不能使用此索引,直到pg_index此行的xmin低于其快照的TransactionXmin,因为该表可能包含它们可见的不兼容行断开的HOT链。

indisready

boolean

如果为真,表示此索引对插入数据可用。如果为假,在插入或修改数据时忽略此索引。

indkey

int2vector

这是一个包含indnatts值的数组,这些数组值表示此索引所建立的表字段。比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键。数组中的0表示对应的索引属性是一个表字段上的表达式,而不是一个简单的字段引用。

indcollation

oidvector

索引用到的各列的ID。

indclass

oidvector

对于索引键中的每个字段,该字段都包含要使用的操作符类的OID,详见PG_OPCLASS

indoption

int2vector

存储列前标识位,该标识位是由索引的访问方法定义。

indexprs

pg_node_tree

表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与INDKEY中的零值个数相同。如果所有索引属性都是简单的引用,则为空。

indpred

pg_node_tree

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

indnullstreatment

tinyint

表示唯一索引中NULL值的处理方式,该字段只有当indisunique为真时才起作用。

取值范围:

  • 0 表示NULLS DISTINCT,NULL互不相等,NULL值可重复插入。
  • 1 表示NULLS NOT DISTINCT,NULL严格相等,NULL值不可重复插入。
  • 2 表示NULLS IGNORE,在等值比较时忽略NULL值列。若索引列全为NULL,则NULL值可重复插入;若部分索引列为NULL,只有非NULL列不相等,才可插入。

默认值:0

说明:
  • 若当前集群为低版本升级到8.2.0.100版本,对于之前已存在索引,该字段值均为NULL;对于新创建的索引,则根据[ NULLS [NOT] DISTINCT | NULLS IGNORE ]字段的指定情况确定该字段值,默认值为0。
  • 若当前集群为新装的8.2.0.100版本,对于新创建的索引,则根据[ NULLS [NOT] DISTINCT | NULLS IGNORE ]字段的指定情况确定该字段值,默认值为0。