51.26. pg_index

目录pg_index包含有关索引的部分信息。其余大部分位于pg_class中。

表 51.26. pg_index

NameTypeReferencesDescription
indexrelidoidpg_class.oid该索引的pg_class条目的 OID
indrelidoidpg_class.oid该索引用于的表的pg_class条目的 OID
indnattsint2 索引中的列数(重复pg_class.relnatts)
indisuniquebool 如果为 true,这是唯一索引
indisprimarybool 如果为 true,则此索引表示表的主键(如果为indisunique,则应始终为 true)
indisexclusionbool 如果为 true,则此索引支持排除约束
indimmediatebool 如果为 true,则在插入时立即执行唯一性检查(如果indisunique不为真,则无关紧要)
indisclusteredbool 如果为 true,则表最后聚集在该索引上
indisvalidbool 如果为 true,则索引当前对查询有效。 False 表示索引可能不完整:仍必须通过INSERT/UPDATE操作对其进行修改,但不能安全地将其用于查询。如果它是唯一的,则也不保证唯一性属性为 true。
indcheckxminbool 如果为 true,则在该pg_index行的xmin低于其TransactionXmin事件范围之前,查询不得使用索引,因为该表可能包含断开的 HOT 链,并且它们具有不兼容的行,它们可以看到
indisreadybool 如果为 true,则索引当前可以插入。 False 表示该索引必须被INSERT/UPDATE操作忽略。
indislivebool 如果为 false,则表示正在删除该索引,因此出于所有目的(包括 HOT 安全决策)应将其忽略。
indisreplidentbool 如果为 true,则已使用ALTER TABLE ... REPLICA IDENTITY USING INDEX ...选择该索引作为“副本身份”
indkeyint2vectorpg_attribute.attnum这是一个indnatts值的数组,这些值指示此索引索引的表列。例如,值1 3表示第一和第三表列构成索引键。此数组中的零表示相应的索引属性是表列上的表达式,而不是简单的列引用。
indcollationoidvectorpg_collation.oid对于索引键中的每一列,它包含要用于索引的排序规则的 OID;如果该列不是可排序的数据类型,则为零。
indclassoidvectorpg_opclass.oid对于索引键中的每一列,它包含要使用的运算符类的 OID。有关详情,请参见pg_opclass
indoptionint2vector 这是一个indnatts值的数组,用于存储每列标志位。这些位的含义由索引的访问方法定义。
indexprspg_node_tree 不是简单列引用的索引属性的表达式树(以nodeToString()表示)。这是一个列表,其中indkey中的每个零条目都有一个元素。如果所有索引属性都是简单引用,则为 null。
indpredpg_node_tree 表示部分索引谓词的表达式树(以nodeToString()表示)。如果不是部分索引,则为 null。