本帖最后由 kxjrzyk 于 2012-12-13 12:27:09 编辑

解决方案 »

  1.   

    要看你的oracle版本了
    视图并不存储数据(物理视图除外),他会和你的where条件一起进行被分析、执行
    你可以做个试验的
      

  2.   

    不同的优化器可能行为不一样
    一般是按从右到左解释.但不排除ORACLE重写查询的可能
      

  3.   

    我有测试过了,ORACLE 解释计划会自动优化!但不知是否有版本的限制
      

  4.   

    在8i之前,Oracle 使用的是一种叫作RBO(Rule Based Optimizer)的优化器,它的执行机制非常简单,就是在优化器里面嵌入若干种规则,执行的SQL语句符合哪种规则(RANK),则按照规则(RANK)制定出相应的执行计划,比如说表上有个索引,如果谓词上有索引的列存在,则Oracle 会选择索引,否则选择全表扫描;又比如,两个表关联的时候,按照表在SQL中的位置来决定哪个是驱动表。
    从8i开始,Oracle 引入了CBO(Cost Based Optimizer),它的思路是让Oracle 获取所有执行计划相关的信息,通过对这些信息做计算分析,最后得出一个代价最小的执行计划作为最终的执行计划。
    CBO是一种比RBO 更理性化的优化器。从10g开始,Oracle 已经彻底丢弃了RBO。即使在表,索引没有被分析的时候,Oracle依然会使用CBO。此时,Oracle 会使用一种叫做动态采样的技术,在分析SQL的时候,动态的收集表,索引上的一些数据块,使用这些数据块的信息及字典表中关于这些对象的信息来计算出执行计划
      

  5.   

    应该会优化的,记得SQL SERVER好像是会。