47.4. pg_amop
pg_amop
表存储有关和访问方法操作符族关联的信息。 如果一个操作符是一个操作符族中的成员,那么在这个表中会占据一行。 一个族成员是一个search操作符或一个ordering操作符。 一个操作符可以在多个族中出现,但是不能在一个族中的多个搜索位置或多个排序位置中出现。 (尽管不太可能,但这是允许的,一个操作符可以被搜索和排序目的使用。)
Table 47-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 |
如果是一个排序操作符,则为这个项排序所依据的btree操作符族; 如果是一个搜索操作符,则为0 |
"搜索"操作符表明这个操作符族的一个索引可以被搜索,找到所有满足 WHERE
_indexed_column_
_operator_
_constant_
的行。 显然,这样的操作符必须返回布尔值,并且它的左输入类型必须匹配索引的字段数据类型。
"排序"操作符表明这个操作符族的一个索引可以被扫描,返回以 ORDER BY
_indexed_column_
_operator_
_constant_
顺序表示的行。这样的操作符可以返回任意可排序的数据类型,它的左输入类型也必须匹配索引的字段数据类型。 ORDER BY
的确切的语义是由amopsortfamily
字段指定的, 该字段必须为操作符的返回类型引用一个btree操作符族。
Note: 目前,假设排序操作符的排序顺序是被族缺省引用的,也就是
ASC NULLS LAST
。 这可以通过添加附加的行来明确声明排序选项来释放。
一个项的amopmethod
必须匹配它包含的操作符族的opfmethod
(包括amopmethod
是故意违反性能原因的表结构的规范化)。同样, amoplefttype
和amoprighttype
必须匹配引用的 pg_operator
的oprleft
和oprright
。