47.26. pg_index

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

Table 47-26. pg_index 字段

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