根据Oracle优化路径
rule 模式下的规则:1、有两个索引存在的情况下,from后面大表在前。小表(返回记录少的表,不是记录少的表)在最后,作为驱动表,Oracle处理SQL语句是从左到右2、有一个索引,则顺序无关3、都没有索引,则大表应该在后

解决方案 »

  1.   

    select * 
    from ta_a,ta_b,ta_c 
    where ta_a = 'Para3' 
    and ta_c = 'Para2' 
    and ta_b = 'Para1'
    and ta_a.key = ta_b.key 
    and ta_a.key = ta_c.key 
    假设 ta_a表中数据量最大,ta_b表中数据量最小
    先处理大表
      

  2.   

    为什么ta_a.key = ta_b.key and ta_a.key = ta_c.key 
    要写在后面呢?是不是Oracle处理语句的时候将条件从后向前扫描呢?
    谁能讲讲原理性的东西呢
      

  3.   

    还有就是如果表大小不同时在
    ta_a.key = ta_b.key 中
    ta_a.key、ta_b.key的位置不同应该效率也不同吧
      

  4.   

    where后面的查询字段同时是索引字段时候效率最高。
      

  5.   

    关于Oracle优化的问题,有专门的资料介绍的有,建议买本相关的书刊看好了,内容还是挺多的.