pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_am 存储关于索引访问方法的信息。系统支持的每种索引访问方法各有一行。
表 3.3. pg_am 列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
| amname | name |
访问方法的名 | |
| amowner | int4 |
pg_shadow.usesysid | 所有者的用户 ID(目前未使用) |
| amstrategies | int2 |
该访问方法的操作符策略数 | |
| amsupport | int2 |
该访问方法的支持例程数 | |
| amorderstrategy | int2 |
如果索引不提供排序顺序则为零,否则为描述该排序顺序的策略操作符的策略编号 | |
| amcanunique | bool |
AM 是否支持唯一索引? | |
| amcanmulticol | bool |
AM 是否支持多列索引? | |
| amindexnulls | bool |
AM 是否支持 NULL 索引项? | |
| amconcurrent | bool |
AM 是否支持并发更新? | |
| amgettuple | regproc |
pg_proc.oid | “取下一个有效元组”的函数 |
| aminsert | regproc |
pg_proc.oid | “插入此元组”的函数 |
| ambeginscan | regproc |
pg_proc.oid | “开始新扫描”的函数 |
| amrescan | regproc |
pg_proc.oid | “重新开始此扫描”的函数 |
| amendscan | regproc |
pg_proc.oid | “结束此扫描”的函数 |
| ammarkpos | regproc |
pg_proc.oid | “标记当前扫描位置”的函数 |
| amrestrpos | regproc |
pg_proc.oid | “恢复已标记扫描位置”的函数 |
| ambuild | regproc |
pg_proc.oid | “构建新索引”的函数 |
| ambulkdelete | regproc |
pg_proc.oid | 批量删除函数 |
| amcostestimate | regproc |
pg_proc.oid | 索引扫描的代价估计 |
支持多列的索引 AM(amcanmulticol 为真)必须支持在第一列之后的列上索引空值,因为规划器会假定该索引可用于只涉及第一列(前几列)的查询。例如,考虑一个建立在 (a,b) 上的索引和一个带 WHERE a = 4 的查询。系统会假定该索引可用于扫描满足 a = 4 的行;如果访问方法在 b 为空时要丢弃带有空 b 的项,这就错了。不过,省略第一个被索引列为空的行是可以的(GiST 目前就是这样做的)。amindexnulls 只有在索引 AM 对所有行(包括空值的任意组合)都建立索引时才应设为真。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。