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