pg_index

pg_index

pg_index系统目录表包含部分关于索引的信息。 剩下的信息主要在pg_class表中。

Table 1. pg_catalog.pg_index
类型 参考 描述
indexrelid oid pg_class.oid 该索引的pg_class项的OID。
indrelid oid pg_class.oid 该索引所对应的表的pg_class项的OID。
indnatts int2   索引中的列数(与其pg_class.relnatts重复)。
indisunique boolean   如果为真,则这是一个唯一索引。
indisprimary boolean   如果为真,则这个索引表示表的主键(此属性为真时indisunique总是为真)。
indisexclusion boolean   如果为true,则此索引支持排除约束
indimmediate boolean   如果为true,则在插入时立即强制执行唯一性检查(如果indisunique不成立则无关紧要)
indisclustered boolean   如果为真,表最后一次是通过CLUSTER命令在此索引上聚簇。
indisvalid boolean   如果为真,则该索引目前对查询有效。 如果为假,意味着该索引目前可能不完整:它仍然必须被INSERT/UPDATE操作所修改,但是它不能被安全地用于查询。
indcheckxmin boolean   如果为true,则查询必须不使用索引,直到此pg_index行的xmin低于其TransactionXmin事件范围,因为该表可能包含具有可以看到的不兼容行的断开的HOT链
indisready boolean   如果为true,则索引当前已准备好进行插入。 False意味着INSERT/UPDATE操作必须忽略索引
indislive boolean   如果为false,则索引正在被删除,并且应该为所有目的而忽略
indisreplident boolean   如果为true,则使用ALTER TABLE ... REPLICA IDENTITY USING INDEX ...将此索引选为“副本标识”
indkey int2vector pg_attribute.attnum 这是一个indnatts值数组,指示此索引索引的表列。 例如,值为1 3意味着第一个和第三个表列构成索引键。 此数组中的零表示相应的索引属性是表列上的表达式,而不是简单的列引用。
indcollation oidvector   对于索引键中的每一列,它包含用于索引的排序规则的OID。
indclass oidvector pg_opclass.oid 对于索引键中的每一列,它包含要使用的运算符类的OID。
indoption int2vector   这是一个indnatts值数组,用于存储每列标志位。 位的含义由索引的访问方法定义。
indexprs text   表达式树(在nodeToString()表示中),用于不是简单列引用的索引属性。 这是一个列表,其中包含indkey中每个零条目的一个元素。 如果所有索引属性都是简单引用,则为NULL
indpred text   部分索引谓词的表达式树(在nodeToString()表示中)。 如果不是部分索引,则为NULL。