快速业务通道

SQL大全[1]

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-22
能在操作符名字的任何地方出现, 因为它们会被认为是一个注释的开始.
一个多字符的操作符名字不能以 "+" 或 "-" 结尾, 除非该名字还包含至少下面字符之一:
~ ! @ # % ^ & | ` ? contentnbsp;    
例如, @- 是一个允许的操作符名, 但 *- 不是. 这个限制允许 PostgreSQL 分析 SQL-有问题的查询而不要求在符号之间有空白.
注意: 当使用非 SQL-标准操作符名时, 你通常将需要用空白把联接的操作符分离开以避免含混.例如,如果你定义了一个左目操作符,名为 "@",你不能写 X*@Y ;你必须写成 X* @Y 以保证 PostgreSQL 把它读做两个操作符而不是一个.
操作符 "!=" 在输入时映射成 "<>", 因此这两个名称总是相等的.
至少需要定义一个 LEFTARG 或 RIGHTARG. 对于双目操作符来说,两者都需要定义. 对右目操作符来说,只需要定义 LEFTARG, 而对于左目操作符来说,只需要定义 RIGHTARG.
同样, func_name 过程必须已经用 CREATE FUNCTION 定义过, 而且必须定义为接受正确数量的指定类型参数(一个或是两个).
如果存在换向操作符则必须指明,这样 PostgreSQL 可以按它的意愿转换操作符的方向.例如,操作符面积小于, <<<, 很有可能有一个转换操作符:面积大于操作符, >>>. 因此,查询优化器可以自由的将下面查询从:
box ''((0,0), (1,1))'' >>> MYBOXES.description   
转换到
MYBOXES.description <<< box ''((0,0), (1,1))''   
这就允许执行代码总是使用后面的形式而某种程度上简化了查询优化器.
类似地,如果存在负号操作符则也应该声明。 假设一个操作符,面积相等, ===,存在,同样有一个面积不等操作符, !==. 负号操作符允许查询优化器将
NOT MYBOXES.description === box ''((0,0), (1,1))''
   
简化成
MYBOXES.description !== box ''((0,0), (1,1))''   
如果提供了一个交换操作符名称, PostgreSQL 将在表中查找它.如果找到,而且其本身没有一个交换符,那么交换符表将被更新,以当前(最新)创建的操作符作为它的交换符.这一点一样适用于负号操作符. 这就允许定义两个互为交换符或负号符的操作符.第一个操作符应该定义为没有交换符或负号符(as appropriate).当定义第二个操作符时,将第一个符号作为交换符或负号符.第一个将因上述的副作用一样被更新(而获得交换符 或负号符).(对于PostgreSQL 6.5, 把两个操作符指向对方同样也行。)
HASHES,SORT1 和 SORT2 选项将为查询优化器进行连接查询时提供支持. PostgreSQL 能够总是用反复替换来计算一个连接(也就是说,处理这样的子句,该子句有两个元组变量,这两个变量被一个操作符分开,这个操作符返回一个boolean量) [WONG76]. 另外, PostgreSQL 可以延着 [SHAP86]实现一个散列-连接算法(hash-join algorithm);但是,我们必须知道这个策略是否可行.目前的散列-连接算法只是对代表相等测试的操作符有效;而且,数据类型的相等必须意味着类型的表现是按位相等的。(例如,一个包含未用的位的数据类型,这些位对相等测试没有影响,但却不能用于哈希连接。)HASHES 标记告诉优化器,对这个操作符可以安全地使用哈希连接。
类似的,两目排序操作符告诉查询优化器一个融合-排序 (merge-sort)是否是一个可用的连接策略,并且告诉优化器使用哪个操作符来对这两个操 作数表排序.排序操作符应该只提供给相等操作符, 并且它们应该对应用于相应的左边和右边数据类型的小于操作符。
如果发现有其他联合策略可用, PostgreSQL 将更改优

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号