pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
索引定义可以为索引的每一列指定一个操作符类。
CREATE INDEXnameONtable(columnopclass[, ...]);
操作符类确定索引针对该列使用哪些操作符。例如,建立在四字节整数上的 B-树索引会使用int4_ops类;该操作符类包含针对四字节整数的比较函数。实际中,列数据类型的默认操作符类通常就足够了。之所以需要操作符类,主要是因为对于某些数据类型,可能存在不止一种有意义的排序方式。例如,可能希望按绝对值或实部对复数数据类型排序。可以为该数据类型定义两个操作符类,并在创建索引时选择合适的类。此外还有一些特殊用途的操作符类:
操作符类box_ops和bigbox_ops都支持box数据类型上的 R-树索引。它们的区别在于,bigbox_ops会将框的坐标按比例缩小,以避免在对非常大的浮点坐标做乘法、加法和减法时出现浮点异常。如果你的矩形所在的范围大约在 20000 个单位见方或更大,就应该使用bigbox_ops。
下面的查询会显示所有已定义的操作符类:
SELECT am.amname AS acc_method,
opc.opcname AS ops_name
FROM pg_am am, pg_opclass opc
WHERE opc.opcamid = am.oid
ORDER BY acc_method, ops_name;
它可以扩展为显示每个类中包含的所有操作符:
SELECT am.amname AS acc_method,
opc.opcname AS ops_name,
opr.oprname AS ops_comp
FROM pg_am am, pg_opclass opc, pg_amop amop, pg_operator opr
WHERE opc.opcamid = am.oid AND
amop.amopclaid = opc.oid AND
amop.amopopr = opr.oid
ORDER BY acc_method, ops_name, ops_comp;
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。