47.26. pg_index

pg_index包含关于索引的一部分信息。其它的信息大多数在pg_class

表 47-26. pg_index 字段

名字类型引用描述
indexrelidoidpg_class.oid这个索引在pg_class里的记录的 OID
indrelidoidpg_class.oid使用这个索引的表在pg_class里的记录的 OID
indnattsint2 索引中的字段数目(复制的pg_class.relnatts)
indisuniquebool 如果为真,这是个唯一索引
indisprimarybool 如果为真,该索引代表该表的主键。这个字段为真的时候indisunique应该总是为真。
indisexclusionbool 如果为真,那么这个索引支持一个排除约束
indimmediatebool 如果为真,立即强制对插入进行唯一性检查(如果indisunique不为真则是不相关的)
indisclusteredbool 如果为真,那么该表最后在这个索引上建了簇。
indisvalidbool  如果为真,那么该索引可以用于查询。如果为假,那么该索引可能不完整: 仍然必须在INSERT/UPDATE操作时进行更新,不过不能安全的用于查询。 如果是唯一索引,那么唯一属性也不保证为真。
indcheckxminbool  如果为真,查询必须不是使用索引,知道这个pg_index行的xmin 低于它们的TransactionXmin事件地平线,因为该表可能包含他们能看到的不兼容的行的断热链。
indisreadybool  如果为真,该索引目前已准备好插入。如果为假,那么该索引必须通过INSERT/UPDATE 操作忽略。
indislivebool  如果为假,那么该索引正在被删除,并且应该被所有目的所忽略(包括热安全决策)
indkeyint2vectorpg_attribute.attnum 这是一个包含indnatts值的数组,这些数组值表示这个索引所建立的表字段。 比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键字。 这个数组里的零表明对应的索引属性是在这个表字段上的一个表达式,而不是一个简单的字段引用。
indcollationoidvectorpg_collation.oid 对于每个在这个索引键字中的字段,这个字段包含用于这个索引的排序规则的OID。
indclassoidvectorpg_opclass.oid 对于索引键字里面的每个字段,这个字段都包含一个指向所使用的操作符类的 OID , 参阅pg_opclass获取细节。
indoptionint2vector  这是indnatts值的一个数组,存储每个字段标志位。 这个标志位的含义是通过索引的访问方式定义的。
indexprspg_node_tree  表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。 它是一个列表,在indkey里面的每个零条目一个元素。 如果所有索引属性都是简单的引用,则为空。
indpredpg_node_tree  部分索引断言的表达式树(以nodeToString()的形式表现)。 如果不是部分索引,则是空字符串。