pg_index
pg_index
pg_index系统目录表包含部分关于索引的信息。 剩下的信息主要在pg_class表中。
列 | 类型 | 参考 | 描述 |
---|---|---|---|
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。 |