PostgreSQL数据库学习之操作符表

王朝mssql·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

8.6. 操作符表

一次索引定义可以为索引的每个字段声明一个 操作符表(operator class).

CREATE INDEX name ON table (column opclass [, ...]);

这个操作符表标识该索引用于该字段要使用的操作 符。例如,一个在 4 字节整数上的 B-tree 索引将使用 int4_ops 表; 这个操作符表包括用于 4 字节整数的比较函数。实际 上,该字段类型的缺省操作符通常就足够了。 拥有操作符表的原因是:对于某些数据类型,可能存在多于一个有意义的顺 序。例如,我们可能想排序两个复数,既可能通过绝对值, 也可能通过实部。我们可以通过为该数据类型定义两个操 作符表,然后在建立索引时选择合适的一个来实现这个目的。 同样还有一些有特殊用途的操作符表:

*

操作符表 box_ops 和 bigbox_ops 都支持对 box 数据类型的 R-tree 索引。 两者的区别是 bigbox_ops 把方形 的坐标按比例缩小,以避免在对非常大的浮点数坐标做乘法, 加法和减法时出现浮点例外。如果你的方形所在的范 围的大小是 20,000 单位的平面或更大,你应该用 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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航