↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.3 / 7.2
历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.

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,即它的“小于”策略号。

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

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.