2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 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

52.4. pg_amop #

目录 pg_amop 存储有关与访问方法操作符族关联的操作符的信息。对于每个属于某个操作符族成员的操作符,都有一行记录。一个族成员可以是“搜索”操作符,也可以是“排序”操作符。一个操作符可以出现在多个族中,但在一个族内的搜索位置不能超过一个,排序位置也不能超过一个。(尽管不太可能,但一个操作符允许同时用于搜索和排序目的。)

表 52.4. pg_amop

列 类型

描述

oid oid

行标识符

amopfamily oid (引用 pg_opfamily.oid)

此条目所属的操作符族

amoplefttype oid (引用 pg_type.oid)

操作符的左输入数据类型

amoprighttype oid (引用 pg_type.oid)

操作符的右输入数据类型

amopstrategy int2

操作符策略编号

amoppurpose char

操作符用途,可以是 s(搜索)或 o(排序)

amopopr oid (引用 pg_operator.oid)

操作符的 OID

amopmethod oid (引用 pg_am.oid)

操作符族所属的索引访问方法

amopsortfamily oid (引用 pg_opfamily.oid)

如果这是一个排序操作符,则此条目所依据的 B-tree 操作符族;如果是搜索操作符,则为零


一个“搜索”操作符条目表示,此操作符族的索引可以用于搜索,以查找所有满足 WHERE indexed_column operator constant 的行。显然,这样的操作符必须返回 boolean,并且其左输入类型必须与索引的列数据类型匹配。

一个“排序”操作符条目表示,此操作符族的索引可以被扫描,以按照 ORDER BY indexed_column operator constant 所表示的顺序返回行。这样的操作符可以返回任何可排序的数据类型,但同样,其左输入类型必须与索引的列数据类型匹配。 ORDER BY 的确切语义由 amopsortfamily 列指定,它必须引用操作符结果类型的 B-tree 操作符族。

注意

目前,假定排序操作符的排序顺序是所引用操作符族的默认顺序,即 ASC NULLS LAST。将来可能会通过添加额外的列来明确指定排序选项来放宽此限制。

条目的 amopmethod 必须与其所属操作符族的 opfmethod 匹配(在此包含 amopmethod 是出于性能考虑而故意反范式化的目录结构)。此外,amoplefttypeamoprighttype 必须与引用的 pg_operator 条目的 oprleftoprright 字段匹配。

提交更正

如果您在文档中发现任何不正确、与您对特定功能的使用经验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。