pg_index
目录pg_index
包含关于索引的部分信息。其他信息大部分在pg_class
中。
Table 52.26. pg_index
的列
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
indexrelid | oid |
| 此索引的pg_class 项的OID |
indrelid | oid |
| 此索引的基表的pg_class 项的OID |
indnatts | int2 | 索引中的总列数(与pg_class.relnatts 重复),这个数目包括键和被包括的属性 | |
indnkeyatts | int2 | 索引中键列的编号,不计入任何的内含列,它们只是被存储但不参与索引的语义 | |
indisunique | bool | 表示是否为唯一索引 | |
indisprimary | bool | 表示索引是否表示表的主键(如果此列为真,indisunique 也总是为真) | |
indisexclusion | bool | 表示索引是否支持一个排他约束 | |
indimmediate | bool | 表示唯一性检查是否在插入时立即被执行(如果indisunique 为假,此列无关) | |
indisclustered | bool | 如果为真,表示表最后以此索引进行了聚簇 | |
indisvalid | bool |
如果为真,此索引当前可以用于查询。为假表示此索引可能不完整:它肯定还在被INSERT /UPDATE 操作所修改,但它不能安全地被用于查询。如果索引是唯一索引,唯一性属性也不能被保证。
| |
indcheckxmin | bool |
如果为真,直到此pg_index 行的xmin 低于查询的TransactionXmin 视界之前,查询都不能使用此索引,因为表可能包含具有它们可见的不相容行的损坏HOT链
| |
indisready | bool |
如果为真,表示此索引当前可以用于插入。为假表示索引必须被INSERT /UPDATE 操作忽略。
| |
indislive | bool | 如果为假,索引正处于被删除过程中,并且必须被所有处理忽略(包括HOT安全的决策) | |
indisreplident | bool |
如果为真,这个索引被选择为使用ALTER TABLE ... REPLICA IDENTITY USING INDEX ... 的“replica identity”
| |
indkey | int2vector |
|
这是一个indnatts 值的数组,它表示了此索引索引的表列。例如一个1 3 值可能表示表的第一和第三列组成了索引项。键列出现在非键(内含)列前面。数组中的一个0表示对应的索引属性是一个在表列上的表达式,而不是一个简单的列引用。
|
indcollation | oidvector |
|
对于索引键(indnkeyatts 值)中的每一列,这包含要用于该索引的排序规则的OID,如果该列不是一种可排序数据类型则为零。
|
indclass | oidvector |
|
对于索引键中的每一列(indnkeyatts 值),这里包含了要使用的操作符类的OID。详见pg_opclass 。
|
indoption | int2vector |
这是一个indnkeyatts 值的数组,用于存储每列的标志位。位的意义由索引的访问方法定义。
| |
indexprs | pg_node_tree |
非简单列引用索引属性的表达式树(以nodeToString() 形式)。对于indkey 中每一个为0的项,这个列表中都有一个元素。如果所有的索引属性都是简单引用,此列为空。
| |
indpred | pg_node_tree |
部分索引谓词的表达式树(以nodeToString() 形式)。如果不是部分索引,此列为空。
|