WEB开发网
开发学院数据库Oracle Oracle中的优化器如何进行评估优化 阅读

Oracle中的优化器如何进行评估优化

 2007-05-13 12:29:51 来源:WEB开发网   
核心提示: ANY和SOME 操作符优化器将跟随(following)值列表的ANY和SOME检索条件用等价的同等操作符和“OR”组成的表达式替换,例如,Oracle中的优化器如何进行评估优化(2),优化器将如下所示的第一条语句用第二条语句替换:· sal >

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来代替。

Tags:Oracle 优化 如何

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接