Oracle中的优化器如何进行评估优化
2007-05-13 12:29:51 来源:WEB开发网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'
- ››oracle 恢复误删除的表和误更新的表
- ››如何检查oracle的归档空间是否满了
- ››如何在浏览器中打开PDF文件并实现预览的思路与代码...
- ››如何改Win7系统我的文档保存位置
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››如何让ios app支持32位和64位
- ››如何删除Windows 8系统未知的账户
- ››如何提高win7系统的响应速度?
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››如何避免iPhone应用中内存泄露
更多精彩
赞助商链接