↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

43.3. pg_am #

目录 pg_am 存储关于索引访问方法的信息。系统支持的每种索引访问方法各有一行。

表 43.3. pg_am 列

名称 类型 引用 描述
amname name   访问方法的名字
amowner int4 pg_shadow.usesysid 所有者的用户 ID(目前未使用)
amstrategies int2   该访问方法的操作符策略数
amsupport int2   此访问方法的支持例程数
amorderstrategy int2   如果索引不提供排序顺序则为零,否则为描述该排序顺序的策略操作符的策略编号
amcanunique bool   访问方法是否支持唯一索引?
amcanmulticol bool   访问方法是否支持多列索引?
amindexnulls bool   访问方法是否支持空值索引项?
amconcurrent bool   该访问方法是否支持并发更新?
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 批量删除函数
amvacuumcleanup regproc pg_proc.oid VACUUM之后的清理函数
amcostestimate regproc pg_proc.oid 估计索引扫描开销的函数

支持多列的索引访问方法(amcanmulticol 为真)必须支持在第一列之后的列上索引空值,因为规划器会假定该索引可用于只涉及第一列(前几列)的查询。例如,考虑一个建立在 (a,b) 上的索引和一个带 WHERE a = 4 的查询。系统会假定该索引可用于扫描满足 a = 4 的行;如果访问方法在 b 为空时要保留带有空 b 的项,这就错了。(这种约束之所以存在,是因为在使用索引之前不会先检查 WHERE 子句中引用了哪些列;索引扫描应当对所有可应用的情况都正确,而不是只对查询中给出的一些列。)不过,省略第一个被索引列为空的行是可以的(GiST 目前就是这样做的)。amindexnulls 只有在索引访问方法对所有行(包括空值的任意组合)都建立索引时才应设为真。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。