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

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

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

14.3. 访问方法策略 #

与操作符类关联的操作符通过“策略号”来标识,用以表示每个操作符在其操作符类上下文中的语义。例如,B-树对键施加了严格的从小到大的顺序,因此像“小于”和“大于等于”这样的操作符,对 B-树来说就很重要。由于 PostgreSQL 允许用户定义操作符,PostgreSQL 不能仅凭操作符名称(例如 < 或 >=)就判断它是哪一类比较。取而代之的是,索引访问方法定义了一组“策略”,可以把它们看成是广义的操作符。每个操作符类都会说明,对于某种特定数据类型和某种索引语义解释,每一种策略分别对应哪个实际操作符。

B-树索引定义了 5 种策略,如表 14.1所示。

表 14.1. B-树策略

操作 策略号
小于 1
小于等于 2
等于 3
大于等于 4
大于 5

哈希索引只表达按位相似性,因此它们只定义 1 种策略,如表 14.2所示。

表 14.2. 哈希策略

操作 策略号
等于 1

R-树索引表达矩形包含关系。它们定义 8 种策略,如表 14.3所示。

表 14.3. R-树策略

操作 策略号
位于左侧 1
位于左侧或重叠 2
重叠 3
位于右侧或重叠 4
位于右侧 5
相同 6
包含 7
被包含 8

GiST 索引更加灵活:它们根本没有固定的策略集合。相反,某个特定 GiST 操作符类的“一致性”支持例程会按自己的方式解释策略号。

顺便说一下,pg_am 中的 amorderstrategy 列表明访问方法是否支持有序扫描。 零表示不支持;如果支持,amorderstrategy 就是与排序操作符对应的策略号。例如,B-树的 amorderstrategy = 1,即它的“小于”策略号。

简而言之,一个操作符类必须指定一组操作符,为该操作符类的数据类型表达上述每一种语义概念。

提交更正

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