PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 48. 系统表 | 下一页

# 48.26. `pg_index`

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

表 48-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` |  | 如果为假，那么该索引正在被删除，并且应该被所有目的所忽略（包括热安全决策）
`indisreplident` | `bool` |  | 如果为真，则该索引已经使用`ALTER TABLE ... REPLICA IDENTITY USING INDEX ...`被选作"副本身份"
`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()`的形式表现)。 如果不是部分索引，则是空字符串。

上一页 | 起始页 | 下一页
`pg_foreign_table` | 上一级 | `pg_inherits`