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重复)。 | |
indnkeyatts |
int2 | 索引中键列的编号,不计入任何的内含列,它们只是被存储但不参与索引的语义。 | |
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 |
pg_node_tree | 表达式树(在nodeToString() 表示中),用于不是简单列引用的索引属性。 这是一个列表,其中包含indkey中每个零条目的一个元素。 如果所有索引属性都是简单引用,则为NULL |
|
indpred |
pg_node_tree | 部分索引谓词的表达式树(在nodeToString() 表示中)。 如果不是部分索引,则为NULL。 |
Table 1. pg_catalog.pg_index