pg_amop #
目录 pg_amop 存储关于与访问方法操作符族
关联的操作符的信息。作为某个操作符族成员的每个操作符各有一行。
族成员既可以是搜索操作符,
也可以是排序操作符。
一个操作符可以出现在多个族中,但在一个族内不能出现在多个搜索位置,
也不能出现在多个排序位置。(一个操作符同时用于搜索和排序是允许的,
尽管不太常见。)
Table 52.4. \1 字段列说明
Column Type Description |
|---|
Row identifier |
本条目所属的操作符族 |
操作符的左手边输入数据类型 |
操作符的右手边输入数据类型 |
Operator strategy number |
操作符的用途, |
操作符的 OID |
操作符族所属的索引访问方法 |
如果是排序操作符,本条目据此排序的 B 树操作符族; 如果是搜索操作符则为零 |
一个“搜索”操作符条目表明,可以搜索这个操作符族的索引,
找出所有满足 WHERE
indexed_column
operator
constant 的行。
显然,这样的操作符必须返回 boolean,
且其左侧输入类型必须与索引列的数据类型匹配。
一个“排序”操作符条目表明,可以扫描这个操作符族的索引,
按 ORDER BY
indexed_column
operator
constant
所表示的顺序返回行。这样的操作符可以返回任何可排序的数据类型,
不过同样,其左侧输入类型必须与索引列的数据类型匹配。
ORDER BY 的确切语义由
amopsortfamily 列指定,
该列必须引用该操作符结果类型的一个 B 树操作符族。
目前,假定排序操作符的排序顺序就是被引用操作符族的默认顺序,
即 ASC NULLS
LAST。将来某天也许会通过增加额外的列来显式指定排序选项,
从而放宽这一假设。
条目的 amopmethod 必须与其所在操作符族的
opfmethod 匹配(在此包含
amopmethod 是为了性能而对目录结构
所做的有意反规范化)。此外,
amoplefttype 和
amoprighttype 必须与被引用的
pg_operator
条目的 oprleft 和
oprright 字段匹配。