动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.如何察看Oracle进程消耗的内存.
.oracle数据库备份与恢复.
.常用数据库JDBC连接写法大全.
.在SuSE 9.1 professional安装Ora.
.企业级OLAP 产品简介.
.手工建造 Swap Partition.
.自制的一个自动备份数据文件脚本.
.Oracle诊断案例----如何捕获问题.
.Linux与硬盘分区.
.Oracle治理高级咨询顾问Jonathan.
.Oracle中建立索引并强制优化器使.
.全面介绍:Oracle数据库日期处理.
.如何使sendmail支持大写的用户名.
.Oracle数据库安全策略分析 (三).
.Installing Oracle 10g on SuSE .
.redhat 8.0下的vsftp的配置.
.Oracle里的交叉SQL语句写法.
.ORACLE神话的破灭.
.在RedHat AS3上快速安装Oracle数.
.[Oracle] Installing Oracle 10g.

基于规则的优化机制对表达式的处理

发表日期:2008-2-9 |



  Oracle优化器在任何可能的时候都会对表达式进行评估,并且把特定的语法结构转换成等价的结构,这么做的原因是:
  
  · 要么结果表达式能够比源表达式具有更快的速度
  
  · 要么源表达式只是结果表达式的一个等价语义结构
  
  不同的SQL结构有时具有同样的操作(例如:= ANY (subquery) and IN (subquery)),ORACLE会把他们映射到一个单一的语义结构。
  
  下面将讨论优化器如何评估优化如下的情况和表达式:常量 LIKE 操作符 IN 操作符 ANY和SOME 操作符 ALL 操作符 BETWEEN 操作符 NOT 操作符 传递(Transitivity) 确定性(DETERMINISTIC)函数
  
  常量
  常量的计算是在语句被优化时一次性完成,而不是在每次执行时。下面是检索月薪大于2000的的表达式:
  
  · sal > 24000/12
  
  · sal > 2000
  
  · sal*12 > 24000
  
  假如SQL语句包括第一种情况,优化器会简单地把它转变成第二种。
  
  注重:优化器不会简化跨越比较符的表达式,例如第三条语句,鉴于此,应用程序开发者应该尽量写用常量跟字段比较检索的表达式,而不要将字段置于表达式当中。
  
  LIKE 操作符
  优化器把使用LIKE操作符和一个没有通配符的表达式组成的检索表达式转换为一个“=”操作符表达式。
  
  例如:优化器会把表达式ename LIKE 'SMITH'转换为ename = 'SMITH'
  
  优化器只能转换涉及到可变长数据类型的表达式,前一个例子中,假如ENAME字段的类型是CHAR(10), 那么优化器将不做任何转换。
  
  IN 操作符
  优化器把使用IN比较符的检索表达式替换为等价的使用“=”和“OR”操作符的检索表达式。
  
  例如,优化器会把表达式ename IN ('SMITH','KING','JONES')替换为
  
  ename = 'SMITH' OR ename = 'KING' OR ename = 'JONES'
  
  ANY和SOME 操作符
  优化器将跟随(following)值列表的ANY和SOME检索条件用等价的同等操作符和“OR”组成的表达式替换。
  
  例如,优化器将如下所示的第一条语句用第二条语句替换:
  
  · sal > ANY (:first_sal, :second_sal)
  
  · sal > :first_sal OR sal > :second_sal
  
  优化器将跟随子查询的ANY和SOME检索条件转换成由“EXISTS”和一个相应的子查询组成的检索表达式。
  
  例如,优化器将如下所示的第一条语句用第二条语句替换:
  
  · x > ANY (SELECT sal FROM emp WHERE job = 'ANALYST')
  
  · EXISTS (SELECT sal FROM emp WHERE job = 'ANALYST' AND x > sal)
  
  ALL 操作符
  优化器将跟随值列表的ALL操作符用等价的“=”和“AND”组成的表达式替换。
  
  例如,sal > ALL (:first_sal, :second_sal)表达式会被替换为:
  
  sal > :first_sal AND sal > :second_sal
  
  对于跟随子查询的ALL表达式,优化器用ANY和另外一个合适的比较符组成的表达式替换。
  
  例如,优化器会把表达式 x > ALL (SELECT sal FROM emp WHERE deptno = 10) 替换为:
  
  NOT (x <= ANY (SELECT sal FROM emp WHERE deptno = 10))
  
  接下来优化器会把第二个表达式适用ANY表达式的转换规则转换为下面的表达式:
  
  NOT EXISTS (SELECT sal FROM emp WHERE deptno = 10 AND x <= sal)
  
  BETWEEN 操作符
  优化器总是用“>=”和“<=”比较符来等价的代替BETWEEN操作符。
  
  例如:优化器会把表达式sal BETWEEN 2000 AND 3000用sal >= 2000 AND sal <= 3000来代替。
  
  NOT 操作符
  优化器总是试图简化检索条件以消除“NOT”逻辑操作符的影响,这将涉及到“NOT”操作符的消除以及代以相应的比较运算符。
  
  例如,优化器将下面的第一条语句用第二条语句代替:
  
  · NOT deptno = (SELECT deptno FROM emp WHERE ename = 'TAYLOR')
  
  · deptno <> (SELECT deptno FROM emp WHERE ename = 'TAYLOR')
  
  通常情况下一个含有NOT操作符的语句有很多不同的写法,优化器的转换原则是使“NOT”操作符后边的子句尽可能的简单,即使可能会使结果表达式包含了更多的“NOT”操作符。
  
  例如,优化器将如下所示的第一条语句用第二条语句代替:
  
  · NOT (sal < 1000 OR comm IS NULL)
  
  · NOT sal < 1000 AND comm IS NOT NULL sal >= 1000 AND comm IS NOT NULL
  
  传递(Transitivity)
  假如“WHERE”子句的两个检索条件涉及了一个共同的字段,优化器有时会根据传递原理推断出第三个检索条件,随后可以根据这个推断出的条件对语句进行优化,推断出的条件可能会激活一个原来的检索条件没有激活的潜在的接口路径(Access path)。

  
  注重:传递仅仅被用在基于代价(cost-based)的优化中。
  
  假设有一个这样的包含两个检索条件的“WHERE”子句:WHERE 字段1 常量 AND字段1 = 字段2,在这个例子里,优化器会推断出新的检索条件:字段2 常量。在这里,是比较运算符=、!=、^=、<>、>、<= 或 >=之中的任何一个,常量是指任何一个涉及了操作符、SQL函数、文字、绑定变量(bind variables)或者关联变量(correlation variables)的常量表达式。
  
  例如,考虑这样一个包含两个各自使用了字段EMP.DEPTNO的检索条件的WHERE子句的查询:
  
  SELECT * FROM emp, dept WHERE emp.deptno = 20 AND emp.deptno = dept.deptno;
  
  使用传递优化,优化器会推断出如下条件:dept.deptno = 20
  
  假如有索引存在于EMP.DEPTNO字段上,这个条件会使调用这个索引的接口路径有效。
  
  注重:优化器只能对字段关联常量的表达式进行推断,而不是字段关联字段的表达式。例如,包含这样条件的WHERE子句:字段1 字段3 AND 字段1 = 字段2,这种情况不能推断出表达式:字段2 < comp_oper> 字段3。
  
  确定性(DETERMINISTIC)函数
  在某些情况下,优化器能够使用先前的函数返回结果而不是重新执行用户定义的函数,这仅仅对那些以限制的方式来执行的函数来说是有效的。这些函数必须对任何的输入都有同样的返回值,函数的结果必须不能因为包(PACKAGE)变量、数据库或会话(SESSION)的参数(例如NLS参数)不同而变化,假如函数在将来重新定义,返回值必须对任何参数来说仍然与以前的返回值相同。函数的创建者可以在以CREATE FUNCTION、CREATE PACKAGE或者CREATE TYPE声明函数时根据以上的要求使用DETERMINISTIC要害字向数据库申明该函数为确定性函数,数据库不会对确定性函数的合法性进行校验,即使一个函数明显的使用了包变量或操作了数据库,仍然可以被定义为确定性函数,这就是说如何安全合法的使用和定义确定性函数是程序员的责任。
  
  当确定性函数在同一个查询里被多次调用,或者被基于函数的索引或物化视图(materialized view)调用时,有可能被一个已经计算出的值取代。
上一篇:九大数据仓库方案特点比较 人气:613
下一篇:Explain进行查询及应用优化 人气:697
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 VoiceDial语音拨号 v1.0 破解版
2008-10-11 SonicLighter神圣火焰杯 v1.0 破
2008-10-11 Folders文件保护 v1.3破解版
2008-10-11 iProtractor量角器 v0.95破解版
2008-10-11 Fring多平台通讯软件 v1.0.1.4破
2008-10-11 WallPaperSearch墙纸搜索器 v1.2
2008-10-11 iLighter打火机 v1.0 破解版
2008-10-11 iNetwork网速测试 v1.0.3破解版
2008-10-11 I-Private绝对隐私 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成