PostgreSQL 13.1 中文入门教程 PostgreSQL pg_amop

2024-02-25 开发教程 PostgreSQL 13.1 中文入门教程 匿名 0

目录pg_amop存储关于与访问方法操作符族相关的操作符信息。对于一个操作符族中的每一个成员即操作符都在这个目录中有一行。一个成员可以是一个搜索操作符或者一个排序操作符。一个操作符可以出现在多个族中,但在同一个组中既不能出现在多个搜索位置也不能出现在多个排序位置(虽然不太可能出现,但是允许一个操作符同时用于搜索和排序目的)。

表 51.4. pg_amopColumns

列类型

描述

oidoid

行标识符

amopfamilyoid(references pg_opfamily.oid)

这个项所在的操作符系列

amoplefttypeoid(references pg_type.oid)

操作符的左手输入数据类型

amoprighttypeoid(references pg_type.oid)

操作符的右手输入数据类型

amopstrategyint2

操作符策略号

amoppurposechar

操作符目的,s表示搜索,o表示排序

amopoproid(references pg_operator.oid)

操作符的OID

amopmethodoid(references pg_am.oid)

使用此操作符系列的索引访问方法

amopsortfamilyoid(references pg_opfamily.oid)

如果是一个排序操作符,该项会根据这个 B树操作符族排序,如果是一个搜索操作符则为0

一个“搜索”操作符项意味着该操作符族的一个索引可以被搜索来查找所有满足如下条件的行: WHEREindexed_columnoperatorconstant。 显然,这样的一个操作符必须返回boolean,且它的左手输入类型必须匹配索引列的数据类型。

一个“排序”操作符项意味着该操作符族的一个索引可以被扫描来返回以如下顺序排列的行: ORDER BYindexed_columnoperatorconstant。 这样一个操作符能够返回任何可排序数据类型,尽管它的左手输入类型必须匹配索引列的数据类型。 ORDER BY的准确语义由amopsortfamily列指定,它必须引用一个适合于操作符结果类型的B树操作符族。

注意

目前,一个排序操作符的排序顺序被假设为其引用的操作符族的默认值,即ASC NULLS LAST。未来可能会通过增加额外的列来显式地指定排序选项。

一个项的amopmethod必须和它所包含的操作符族的opfmethod相匹配(这里包括amopmethod是一个为了性能原因而故意对目录结构做的反规范化)。此外,amoplefttypeamoprighttype也必须匹配被引用的 pg_operator项的oprleftoprright域。