51.4. pg_amop
目录pg_amop
存储有关与访问方法运算符系列相关联的运算符的信息。作为操作员系列成员的每个操作员都有一行。家庭成员可以是* search 运算符或 ordering *运算符。一个操作员可以出现在多个家庭中,但不能出现在一个家庭中的一个以上搜索位置或一个 Order 位置。 (虽然不太可能,但允许操作员同时用于搜索和 Order.)
表 51.4. pg_amop
列
Name | Type | References | Description |
---|---|---|---|
oid | oid | 行标识符(隐藏属性;必须显式选择) | |
amopfamily | oid | pg_opfamily.oid | 此项的运算符家庭 |
amoplefttype | oid | pg_type.oid | 运算符的左手 Importing 数据类型 |
amoprighttype | oid | pg_type.oid | 运算符的右侧 Importing 数据类型 |
amopstrategy | int2 | 运算符策略编号 | |
amoppurpose | char | 出于运算符目的,s 用于搜索或o 用于 Order | |
amopopr | oid | pg_operator.oid | 运算符的 OID |
amopmethod | oid | pg_am.oid | 索引访问方法运算符族适用于 |
amopsortfamily | oid | pg_opfamily.oid | B-tree 运算符族,该条目根据是否为 Order 运算符进行排序;如果搜索运算符,则为零 |
“搜索”运算符条目指示可以搜索该运算符系列的索引,以找到满足WHERE
* indexed_column
* * operator
* * constant
*的所有行。显然,此类运算符必须返回boolean
,并且其左侧 Importing 类型必须与索引的列数据类型匹配。
“排序”运算符条目指示可以对该运算符系列的索引进行扫描,以按ORDER BY
* indexed_column
* * operator
* * constant
*表示的 Sequences 返回行。这样的运算符可以返回任何可排序的数据类型,尽管其左手 Importing 类型必须再次与索引的列数据类型匹配。 ORDER BY
的确切语义由amopsortfamily
列指定,该列必须引用 B 树运算符族作为运算符的结果类型。
Note
目前,假设排序运算符的排序 Sequences 是所引用运算符系列(即ASC NULLS LAST
)的默认设置。有朝一日,可以通过添加其他列来显式指定排序选项来放松这种情况。
条目的amopmethod
必须与其包含的运算符系列的opfmethod
相匹配(包括amopmethod
,这是出于性能原因而故意对目录结构进行非规范化)。同样,amoplefttype
和amoprighttype
必须与引用的pg_operator
条目的oprleft
和oprright
字段匹配。