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

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

不受支持的版本: 7.3 / 7.2
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

14.2. 访问方法和操作符类 #

pg_am 表为每个索引访问方法保存一行。对常规表访问的支持内置于 PostgreSQL 中,但所有索引访问方法都在 pg_am 中描述。可以定义所需的接口例程,然后在 pg_am 中创建一行, 从而添加新的索引访问方法 --- 但这远超出了本章的范围。

索引访问方法的例程并不直接知道该访问方法将处理哪些数据类型。相反,一个操作符类标识了访问方法在处理特定数据类型时需要能够使用的那组操作。之所以称为操作符类,是因为它指定的一项内容就是可与索引一起使用的 WHERE 子句操作符集合(即能被转换成索引扫描条件的操作符)。操作符类还可以指定索引访问方法内部操作所需的某些支持过程,但这些过程并不直接对应任何可与索引一起使用的 WHERE 子句操作符。

可以为同一种输入数据类型和索引访问方法定义多个操作符类。这样就能为一种数据类型定义多套索引语义。例如,一个 B-树索引要求为其处理的每一种数据类型定义一种排序顺序。对于复数数据类型,也许既需要一个按复数绝对值排序的 B-树操作符类,也需要另一个按实部排序的操作符类,等等。通常,其中一个操作符类会被视为最常用,并标记为该数据类型在该索引访问方法上的默认操作符类。

同一个操作符类名可以用于多个不同的访问方法(例如,B-树和哈希访问方法都有名为 oid_ops 的操作符类),但每一个这样的类都是独立实体,必须分别定义。

提交更正

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